{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "centered-shark",
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "import importlib\n",
    "import data_logging_functions\n",
    "importlib.reload(data_logging_functions)\n",
    "from data_logging_functions import *\n",
    "import eval_metrics\n",
    "importlib.reload(eval_metrics)\n",
    "from eval_metrics import *\n",
    "import helper_library\n",
    "importlib.reload(helper_library)\n",
    "from helper_library import *\n",
    "import compiler_helper_functions\n",
    "importlib.reload(compiler_helper_functions)\n",
    "from compiler_helper_functions import *\n",
    "import glob\n",
    "## let us now plot relative data\n",
    "from scipy.stats.mstats import gmean\n",
    "from scipy.stats import gstd"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "silver-region",
   "metadata": {},
   "source": [
    "# Characterization Data for free evolution experiments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "sustained-commerce",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'dataplot' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-2-eea0c13b65a0>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0myticks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.8\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      7\u001b[0m \u001b[0mplot_name\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'./final_plots_for_paper/free_evolution_data.pdf'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m dataplot(free_evolution_data,figure_dim=[4.5,2.5],\n\u001b[0m\u001b[1;32m      9\u001b[0m          \u001b[0mlegends\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'No DD'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'With DD'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlegend_cols\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;31m#legend_loc='upper center',\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     10\u001b[0m          \u001b[0mxticks_labels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mangles\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mmarker_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m12\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlegend_loc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'lower left'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'dataplot' is not defined"
     ]
    }
   ],
   "source": [
    "free_evolution_data = np.array([[1,0.85926,0.79815,0.84889,0.94407], \n",
    "                               [0.98185,0.96037,0.96074,0.96074,0.95]]) # no dd, dd\n",
    "font_size = 16\n",
    "angles = [0,'\\u03C0/3','\\u03C0/2','2\\u03C0/3','\\u03C0']\n",
    "yticks = [0.8,0.9,1.0]\n",
    "yticks = [0.4,0.6,0.8,1.0]\n",
    "plot_name = './final_plots_for_paper/free_evolution_data.pdf'\n",
    "dataplot(free_evolution_data,figure_dim=[4.5,2.5],\n",
    "         legends=['No DD', 'With DD'],legend_cols=2,#legend_loc='upper center',\n",
    "         xticks_labels=angles,marker_size=12,legend_loc='lower left',\n",
    "         ylim=[0.25,1.2],yticks_labels=yticks,yticks_locs=yticks,\n",
    "         ylabel='Fidelity of q[0]',xlabel='Rotation Angle (\\u03F4)',\n",
    "         font_family='sans-serif',palette_style='paired',\n",
    "         yticks_fontsize=font_size,xticks_fontsize=font_size,xlabel_size=font_size,\n",
    "         plot_name=plot_name,\n",
    "         ylabel_size=font_size,legend_size=font_size-2)                "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "exciting-emerald",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 324x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "free_evolution_data = np.array([[0.98599, 0.41019, 0.28153, 0.43057, 0.81401], \n",
    "                                [0.94777, 0.81656, 0.74777, 0.80892, 0.85605]]) # no dd, dd\n",
    "font_size = 16\n",
    "angles = [0,'\\u03C0/3','\\u03C0/2','2\\u03C0/3','\\u03C0']\n",
    "yticks = [0.4,0.6,0.8,1.0]\n",
    "\n",
    "plot_name = './final_plots_for_paper/evolution_data_in_presence_of_cnot.pdf'\n",
    "dataplot(free_evolution_data,figure_dim=[4.5,2.5],\n",
    "         legends=['No DD', 'With DD'],legend_cols=2,legend_loc='upper center',\n",
    "         xticks_labels=angles,marker_size=12,\n",
    "         ylim=[0.25,1.2],yticks_labels=yticks,yticks_locs=yticks,\n",
    "         ylabel='Fidelity of q[0]',xlabel='Rotation Angle (\\u03F4)',\n",
    "         font_family='sans-serif',palette_style='paired',\n",
    "         yticks_fontsize=font_size,xticks_fontsize=font_size,xlabel_size=font_size,\n",
    "         plot_name=plot_name,\n",
    "         ylabel_size=font_size,legend_size=font_size-2)                "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "anonymous-corporation",
   "metadata": {},
   "outputs": [],
   "source": [
    "## plotting script for exhaustive DD combinations\n",
    "import seaborn as sns\n",
    "\n",
    "def histogram_data_from_characterization(input_data,error_metric='fidelity',exclude_mode=0):\n",
    "    '''\n",
    "    data: data from logfile\n",
    "    error_metric: the metric to be determined\n",
    "    mode: 0-> return the data 1-> plot the data (useful to reuse the code)\n",
    "    '''\n",
    "    \n",
    "    data = input_data['char_output']\n",
    "    \n",
    "    ## what is the total number of combinations?\n",
    "    qubits = list(data.keys())\n",
    "    print('Number of Qubits ', len(qubits))\n",
    "    total_combinations = 0\n",
    "    for qubit in qubits:\n",
    "        curr_qubit_links = len(data[qubit])\n",
    "        total_combinations = curr_qubit_links + total_combinations\n",
    "\n",
    "    print('Total Number of Combinations ', total_combinations)\n",
    "    \n",
    "    if exclude_mode:\n",
    "        num_circuits_per_qubit_link_combo = 1*3 # 5 theta values , 1 CNOT , 5 circuits (No DD, XX, XYXY, IBMQ_XX, IBMQ_XYXY)\n",
    "    else:\n",
    "        num_circuits_per_qubit_link_combo = 5\n",
    "    all_combinations = total_combinations * num_circuits_per_qubit_link_combo\n",
    "    err = np.zeros((5,all_combinations))\n",
    "    rel_err = np.zeros((4,all_combinations)) # 0: 'xx', 1: 'xyxy', 2: 'ibmq_dd', 3: 'ibmq_xyxy'\n",
    "    \n",
    "    circ_types = ['no_dd','xx','xyxy','ibmq_xx','ibmq_xyxy']\n",
    "    if 'ideal_counts' not in list(data.keys()):\n",
    "        ideal_output = {'0': 1024}\n",
    "    else:\n",
    "        ideal_output = data['ideal_counts']\n",
    "        \n",
    "    curr_data_point = 0\n",
    "    for qubit in qubits:\n",
    "        links = list(data[qubit].keys())\n",
    "       \n",
    "        for curr_link in links:\n",
    "            cnots = list(data[qubit][curr_link].keys())\n",
    "            \n",
    "            for curr_cnot in cnots:\n",
    "                theta_strings = list(data[qubit][curr_link][curr_cnot].keys())\n",
    "                if exclude_mode:\n",
    "                    required_theta_strings = theta_strings[1:4]\n",
    "                else:\n",
    "                    required_theta_strings = theta_strings[0:5] # all\n",
    "                for curr_theta in required_theta_strings:\n",
    "                    for circuit_id in range(len(circ_types)):                  \n",
    "                        curr_data = data[qubit][curr_link][curr_cnot][curr_theta][circ_types[circuit_id]]['counts']\n",
    "                        err[circuit_id][curr_data_point] = get_evaluation_output(ideal_output,curr_data,error_metric)\n",
    "                    curr_data_point = curr_data_point +1\n",
    "    \n",
    "    \n",
    "    for i in range(4):\n",
    "        for j in range(all_combinations):\n",
    "            \n",
    "            rel_err[i][j] = err[i+1][j]/err[0][j]\n",
    "\n",
    "    error_report = {}\n",
    "    error_report = {'abs_no_dd': err[0], 'abs_xx': err[1], 'abs_xyxy': err[2], \n",
    "                    'abs_ibmq_xx': err[3], 'abs_ibmq_xyxy': err[4], \n",
    "                    'rel_xx': rel_err[0], 'rel_xyxy': rel_err[1], \n",
    "                    'rel_ibmq_xx': rel_err[2], 'rel_ibmq_xyxy': rel_err[3]}\n",
    "\n",
    "    return error_report\n",
    "\n",
    "def plot_dd_histogram(plot_data,plot_name=None,xlim=None,data_type='absolute'):\n",
    "    fig, ax = plt.subplots(1, 1)\n",
    "    fig.set_size_inches(7.4,2.5)\n",
    "    color_palette = get_color_palette('paired',Ncolors=len(plot_data))\n",
    "    labels=['No-DD', 'With DD']\n",
    "    for i in range(len(plot_data)):\n",
    "        sns.histplot(data=plot_data[i],bins=100,color=color_palette[i],label=labels[i])\n",
    "    if xlim is not None:\n",
    "        plt.xlim(xlim[0],xlim[1])\n",
    "    plt.rcParams[\"font.family\"] = 'sans-serif'\n",
    "    plt.ylabel('Frequency',fontsize=16)\n",
    "    if len(plot_data)>1 or data_type=='absolute':\n",
    "        plt.xlabel('Fidelity',fontsize=16)\n",
    "        plt.legend(fontsize=16)\n",
    "    else:\n",
    "        plt.xlabel('Relative Fidelity',fontsize=16)\n",
    "    plt.yscale('log')\n",
    "    plt.yticks([1,10,100],[1,10,100],fontsize=16)\n",
    "    \n",
    "    plt.yticks(fontsize=16)\n",
    "    plt.xticks(fontsize=16);\n",
    "    if plot_name is None:\n",
    "        if len(plot_data)>1:\n",
    "            plot_name='./final_plots_for_paper/absolute_fidelity_distribution_of_dd_impact.pdf'\n",
    "        else:\n",
    "            plot_name='./final_plots_for_paper/relative_fidelity_distribution_of_dd_impact.pdf'\n",
    "\n",
    "    #print(plot_name)\n",
    "    plt.savefig(plot_name, bbox_inches=\"tight\")\n",
    "    \n",
    "def statistics_from_histogram_data(histogram_data):\n",
    "    if len(histogram_data)>1: # contains both No-DD and DD\n",
    "        print('Statistics for No-DD')\n",
    "        print('Mean ', statistics.mean(histogram_data[0]), ' Min ', min(histogram_data[0]))\n",
    "        print('Statistics for DD')\n",
    "        print('Mean ', statistics.mean(histogram_data[1]), ' Min ', min(histogram_data[1]))\n",
    "    #else: # relative data\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "applicable-inspiration",
   "metadata": {},
   "source": [
    "# Analyzing the characterization data obtained using our software library"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "included-footage",
   "metadata": {},
   "source": [
    "**Read the Data and Gather Statistics**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "absent-director",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of Qubits  16\n",
      "Total Number of Combinations  224\n"
     ]
    }
   ],
   "source": [
    "logname = './characterization_logfiles/ibmq_guadalupe_cnot_char_4_5_21.log'\n",
    "read_data = read_data_dictionary_from_logfile(logname)\n",
    "error_data = histogram_data_from_characterization(read_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "missing-assault",
   "metadata": {},
   "source": [
    "**Plotting Absolute Data**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "vital-local",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Statistics for No-DD\n",
      "Mean  0.8453962054571429  Min  0.1357421876\n",
      "Statistics for DD\n",
      "Mean  0.9132359096982143  Min  0.5771484376\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 532.8x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "absolute_data = [error_data['abs_no_dd'],error_data['abs_xyxy']]\n",
    "plot_dd_histogram(absolute_data)\n",
    "\n",
    "statistics_from_histogram_data(absolute_data)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "trying-uncle",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x172.8 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAC5CAYAAAABBXXWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAcyElEQVR4nO3deZxU1Zn/8c/D2jSLC3SrA2lAiYOgRgUVIjTgy2DENeOS4DKDCXGLSn6YGE3G3SRMFn+JGhTcMOMogo5EZBLBONBoQCW4QRR1BHFhWMIihkUwz/xxb2F1dXV33a5bXdv3/XrVq7rPXeo52jx9+tyzmLsjIiKFq02+AxARkaYpUYuIFDglahGRAqdELSJS4JSoRUQKXLt8B5BvPXr08D59+uQ7DBEpMX/+8583uHtVHPcq+0Tdp08flixZku8wRKTEmNl7cd1LXR8iIgVOiVpEpMApUYuIFDglahGRAlf2DxNFRACuu+kWNm/9GwB7d+3MLTdcl+eIPqdELSICbN76N864+CoAZk35ZZ6jqU+JOgNbtmxhw4YNfPrpp/kORXKgbdu2dO3alX333ZeOHTvmOxxpZYmW9JtvvZXvUBqlRN2MHTt2sHbtWnr16kWnTp0ws3yHJDFyd3bt2sXHH3/M6tWrqampUbIuM4mW9C0Txuc7lEbpYWIz1q9fT1VVFZWVlUrSJcjM6NChAz169GCfffZh48aN+Q5JpIFWT9Rm1svM7jCzRWa2zczczPqkOa/CzH5uZmvMbHt4fm2a89qY2bVmtsrMdpjZq2Z2Zlzx7tixgy5dusR1Oylg3bp1Y+vWrfkOQ6SBfLSo+wHnAJuAhU2cdx/wbeB64BRgDfC0mR2Rct4twI3AncBJwGJgppmNiSPY3bt3066deojKQfv27fnss8/yHYZIA/nIQHXuvh+AmY0HRqeeYGZfAs4FvunuD4RlC4DlwM3AaWFZNfA9YJK7/yK8/L/NrB8wCfivOAJWl0d50P9nSXj11Ve54nvXFMwwvVZP1O7+9wxOOw3YBTyadN1uM5sOXGNmHd19J3Ai0AF4KOX6h4D7zayvu6+MKXQRKRHJY6bTjfZo074DZ1x8VcEM0yvUh4kDgZXuvi2lfDlBYu6XdN5O4J005wEMyFmEIlK0EiM9zrj4KnbtLvzurkLtfN2XoA871cak44n3zd5wK/XU8+oxs4uAiwBqampaFGDyb+R8aMmfZI888gjnnnsuCxYsoLb28+eya9euZf/996e6upq1a9fWu+Y3v/kNl19+Oa+//jqHHnooZsYNN9zAjTfeCMCsWbN49913mThxYr3r5s+fz6hRo5g3bx4nnHBC5PqNHDmSBQsWANCmTRu6detG7969GT58OJdccgkDBw6sd/60adO48MIL93xfWVlJVVUVRx55JGPHjuXss89W14YUrUJN1Dnl7lOBqQCDBw9OTfIZSZ7FlA8t+ZMskZzr6urqJeq6ujoqKytZt24db775Jv379693rHv37nsS46JFi+jVq9fnccyaxTPPPNMgUcfh8MMPZ8qUKQB8/PHHLFu2jPvvv5+7776bX//611x22WUNrpk5cya9evVi586drF69mjlz5jB27FimTp3K7Nmz6dSpU+xxSvGIOrmlUPqqC7XrYxOwT5ryRAt5Y9J5e1vDplLqeQL07NmTgw46iLq6unrldXV1HH/88WmPLVy4kGHDhu1pjQ4ZMqReos6lrl27MmTIEIYMGcLo0aOZOHEiL7/8MqeffjpXXHEFL730UoNrjjjiCIYMGcKIESO44IILmD59OjNmzODZZ5/l6quvbpW4pXAlGliZdnck+qrz+dczFG6iXg70NbPKlPIBwKd83ie9HOgIHJTmPIC/NPYBZnaqmU3dsmVLDOEWj9raWhYtWsTu3bv3lNXV1TF8+HCGDRtWL1G//fbbrFmzhhEjRuwpM7M93R7jxo3jwQcf5MMPP8TMMDNStzXbtm0bl19+OT169KBHjx6cf/75bN68ucXxt2/fnsmTJ9OuXTtuv/32jK4588wzOf3007nnnnvYti31sYdI4SvURD0baA+cnSgws3bA14G54YgPgD8QjA45L+X684FlTY34cPfZ7n7RXnvtFWvgha62tpZPPvmEpUuXArB582aWLVvG8OHDGT58OAsXfj60PZG0k7tJkl133XWMGTOGqqoqFi1axKJFi3jiiSfqnTNhwgTMjIcffpgbbriBxx9/nAkTJmRVh+rqagYPHszzzz+f8TVjxoxh586d2nZNilJe+qjN7Kzwy0Hh+0lmth5Y7+4L3P1lM3sU+JWZtQdWApcCfUlKyu6+zsxuA641s63AUoJkfjzhWOsmYjgVOLVfv35NnVZyEq3juro6jjnmGBYuXEjHjh0ZNGgQ3bt3Z/Xq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\n",
      "text/plain": [
       "<Figure size 360x172.8 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "absolute_data = [error_data['abs_no_dd'],error_data['abs_xyxy']]\n",
    "\n",
    "ydim=2.4\n",
    "xdim=5\n",
    "\n",
    "xticks = [0.2, 0.4,0.6,0.8,1.0]\n",
    "\n",
    "fig, ax = plt.subplots(1, 1)\n",
    "fig.set_size_inches(xdim,ydim)\n",
    "color_palette = get_color_palette('paired',Ncolors=1)\n",
    "labels=['No-DD', 'With DD']\n",
    "sns.histplot(data=absolute_data[0],bins=50,color=color_palette[0],label=labels[0])\n",
    "plt.xlim(0.1,1)\n",
    "plt.rcParams[\"font.family\"] = 'sans-serif'\n",
    "plt.ylabel('Frequency',fontsize=16)\n",
    "plt.xlabel('Fidelity',fontsize=16)\n",
    "plt.legend(fontsize=16)\n",
    "plt.yscale('log')\n",
    "plt.yticks([1,10,100],[1,10,100],fontsize=16)\n",
    "plt.xticks(xticks, xticks, fontsize=16);\n",
    "plot_name='./final_plots_for_paper/absolute_fidelity_distribution_of_no_dd.pdf'\n",
    "plt.savefig(plot_name, bbox_inches=\"tight\")\n",
    "\n",
    "\n",
    "fig, ax = plt.subplots(1, 1)\n",
    "fig.set_size_inches(xdim,ydim)\n",
    "color_palette = get_color_palette('paired',Ncolors=1)\n",
    "sns.histplot(data=absolute_data[1],bins=50,color=color_palette[0],label=labels[1])\n",
    "plt.xlim(0.1,1)\n",
    "plt.rcParams[\"font.family\"] = 'sans-serif'\n",
    "plt.ylabel('Frequency',fontsize=16)\n",
    "plt.xlabel('Fidelity',fontsize=16)\n",
    "plt.legend(fontsize=16)\n",
    "plt.yscale('log')\n",
    "plt.yticks([1,10,100],[1,10,100],fontsize=16)\n",
    "plt.xticks(xticks, xticks, fontsize=16);\n",
    "plot_name='./final_plots_for_paper/absolute_fidelity_distribution_of_with_dd.pdf'\n",
    "plt.savefig(plot_name, bbox_inches=\"tight\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "fixed-slovakia",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 532.8x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "absolute_data = [error_data['abs_xyxy']]\n",
    "plot_dd_histogram(absolute_data,xlim=[0.1,1],\n",
    "                  plot_name='./final_plots_for_paper/absolute_fidelity_distribution_of_no_dd.pdf')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "diverse-understanding",
   "metadata": {},
   "source": [
    "**Plotting Relative Data**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "digital-delta",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAewAAAC/CAYAAAA8R++NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAf8UlEQVR4nO3deZhcdZ3v8feHpJMOBEM2kkAICbQbLdsQCCKaKDxskiirCzgQ0TiKW0Au5oIYIgwgyjLMqMTBG7joCMRhiSAgYAIogSACY4sBzcqFQEhCALOQhu/941SHSnV1d53uqq463Z/X89RTXef8zjnfX1dVf/uc81sUEZiZmVlt267aAZiZmVnHnLDNzMwywAnbzMwsA5ywzczMMsAJ28zMLAOcsM3MzDKgb7UDqLZhw4bF2LFjqx2GmZn1An/84x9fiYjhndm21yfssWPH8vjjj1c7DDMz6wUkLe/str4kbmZmlgFO2GZmZhnghG1mZpYBvf4ettW2LVu20NTUtM1rgLq6OgAaGxu3/mxm1pM5YVtNa2pqYu78Rew2bk8AFj08n8FDh9Hw/g+wcunfAdhvv/2qGKGZWfdwwraat9u4PWnYa28AVi75G0NH7bL1tZlZb+GEbWZWgzZt2sTq1avZtGkTzc3N1Q7H2tG3b1/q6+sZPnw49fX1lTtOxfZc4yRNBiY3NDRUOxTLU3jPevHixUT9sCpGZNb91q9fz0svvcTw4cMZOXIkffv2RVK1w7IiIoLm5mbeeOMNVqxYwYgRIxg0aFBFjtVrW4lHxLyImFapX6x1Tss960eXr+XR5Wv57eNNbNy4sdphmXWrV155hdGjRzN48GDq6uqcrGuYJOrq6hg8eDCjR49mzZo1FTtWrz3DttpVeM/arLd58803GTBgQLXDsJQGDBjA5s2bK7b/XnuGbWZWy3xWnT2Vfs+csM3MzDLAl8TNzDKisFFmNXiwoupxwrbMequ5mcWLF2+zzH9MrCcrHEiou3VlsKI5c+YwdepUBg0axNKlSxk8ePDWdc3NzdTV1fHd736XmTNndjnOmTNncuGFF259PXDgQEaOHMmBBx7IaaedxpFHHrlN+WXLljFu3Litr/v168fgwYNpbGxk8uTJnHHGGey4445djqurnLAts15YsYylmzfxan0ytaxHPrPeIL9RZhatX7+eyy67jEsvvbTix3r44Yfp06cPGzZsYOnSpcydO5ejjjqKU089leuvv57tttv2rvCMGTOYMmUKzc3NvPzyyzz44INccMEFXH311dxzzz285z3vqXjM7XHCtkzbZewemf7jZdbbHHHEEVxzzTVMnz6dESNGVPRYEyZMoG/fd9LcGWecwZVXXslZZ53Ffvvtx9lnn71N+T322IODDz546+vjjz+eM888k0MOOYSTTjqJJ598sqqNAd3ozMzMus35558PwEUXXdRuuccee4zDDz+cgQMHssMOO3DYYYfx2GOPdfn406dPZ//99+fqq68uqfy73/1uzj//fJ5++mkeeOCBLh+/K7o9YUsaLekaSY9I2iApJI0tUq5e0uWSXpS0MVf+I0XKbSdphqRlkjZJekrSCd1SGTMzS2XUqFF89atfZfbs2SxfvrxomaeffpqJEyeybt065syZww033MBrr73GxIkTeeqpp7ocw9FHH83KlStZsWJFSeWPOeYYAH7/+993+dhdUY0z7AbgZGAd8FA75a4DvghcABwLvAjcI2m/gnLfA2YC/w4cDSwEbpF0TFmjNjOzsjj33HMZMGDANg3D8s2aNYv+/ftz//33c+KJJ3LCCSdw//33t7tNGmPGjAHgxRdfrEj5SqlGwn4wIkZExDHALcUKSNoX+CwwPSJ+GhH3kyT5FcCsvHI7A98CLo2IH0TE7yLiS8DvgMq3aDAzs9SGDBnC2WefzQ033NCqpwfAgw8+yLHHHstOO+20ddm73vUupkyZwoIFC7Yua25u3uZRqogASh/oJG35Sun2hB0Rb5dQbAqwBbgpb7tm4JfAkZL65xYfCfQDbizY/kZgb0njMDOzmjN9+nSGDBnCBRdc0Grd2rVrGTVqVKvlI0eOZN26dUDSFauurm6bx7Jly0o69sqVKwGKHqMc5SulVluJNwJLI2JDwfImkgTdkPu5EdgMFA443TKywF7A0grGaWZmnTBw4EBmzJjB2WefzTnnnLPNuiFDhrBq1apW26xatWpr/+1ddtmFRYsWbbN+l112KenYd911F2PGjGG33XYrqfydd94JwKGHHlpS+Uqp1YQ9hOQed6G1eetbnl+NlusVbZczM7Ma85WvfIUrrrhia8vxFhMnTuSuu+7i9ddf3zpgyeuvv868efOYNGkSkAxuMn78+NTHvPLKK3nyySe56qqrSir/3HPPcdFFF7H/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\n",
      "text/plain": [
       "<Figure size 532.8x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "relative_dd_to_no_dd = [error_data['rel_ibmq_xyxy']]\n",
    "plot_dd_histogram(relative_dd_to_no_dd)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "basic-egypt",
   "metadata": {},
   "source": [
    "# Analyzing the characterization data obtained using directed characterization experiments"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "reserved-entertainment",
   "metadata": {},
   "source": [
    "**These experiments store the data in a slightly different format and therefore, using a different function to gather all the statistics**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "acting-sense",
   "metadata": {},
   "outputs": [],
   "source": [
    "'''\n",
    "Functions to extract specific qubit-link combination data from logfiles and report statistics for all combinations\n",
    "Useful for analyzing the experiments run for characterizing the entire machine\n",
    "'''\n",
    "\n",
    "def get_qubit_link_combination_data(read_data,qubit_id,link_id):\n",
    "    topology = read_data['topology']\n",
    "    char_output = read_data['char_output']\n",
    "    theta_strings = list(char_output[qubit_id].keys())\n",
    "    for link in range(len(topology[qubit_id])):\n",
    "        if link_id ==link:\n",
    "            no_dd_pst,dd_pst = [],[]\n",
    "            edge_str = str(topology[qubit_id][link][0]) + '-' +str(topology[qubit_id][link][1])\n",
    "            for theta in theta_strings:\n",
    "                no_dd_counts = char_output[qubit_id][theta][edge_str]['no_dd']\n",
    "                no_dd_pst.append(no_dd_counts['0']/sum(no_dd_counts.values()))\n",
    "                dd_counts = char_output[qubit_id][theta][edge_str]['dd']\n",
    "                dd_pst.append(dd_counts['0']/sum(dd_counts.values()))\n",
    "        #print('No DD PST ',no_dd_pst)\n",
    "        #print('DD PST ',dd_pst)\n",
    "    return no_dd_pst,dd_pst    \n",
    "        \n",
    "## get full statistics\n",
    "def gather_characterization_statistics(read_data):\n",
    "    # total number of characterization circuits\n",
    "    num_qubits = len(list(read_data['topology'].keys()))\n",
    "    topology = read_data['topology']\n",
    "    char_output = read_data['char_output']\n",
    "    theta_strings = list(char_output[qubit_id].keys())\n",
    "    num_links_total = 0\n",
    "    for qubit in range(num_qubits):\n",
    "        num_links_total = num_links_total + len(topology[qubit])\n",
    "    print('Number of Qubits ', num_qubits)\n",
    "    print('Total combinations (qubit+link) ', num_links_total)\n",
    "    num_circuits_per_combination = 10 # 5 angles, DD and no DD\n",
    "    print('Total Number of Characterization Circuits ', num_circuits_per_combination*num_links_total)\n",
    "    # compute the relative fidelity \n",
    "    relative_fidelity = []\n",
    "    for qubit in range(num_qubits):\n",
    "        for link in range(len(topology[qubit])):\n",
    "            edge_str = str(topology[qubit][link][0]) + '-' +str(topology[qubit][link][1])\n",
    "            for theta in theta_strings:\n",
    "                no_dd_counts = char_output[qubit][theta][edge_str]['no_dd']\n",
    "                no_dd_pst = no_dd_counts['0']/sum(no_dd_counts.values())\n",
    "                dd_counts = char_output[qubit][theta][edge_str]['dd']\n",
    "                dd_pst = dd_counts['0']/sum(dd_counts.values())\n",
    "                relative_fidelity.append(dd_pst/no_dd_pst)\n",
    "    mean = statistics.mean(relative_fidelity)\n",
    "    median = statistics.median(relative_fidelity)\n",
    "    stdev = statistics.stdev(relative_fidelity)\n",
    "    print('Statistics-> Mean ', mean, ' Median ', median, ' Std Dev ', stdev)\n",
    "    print('Best Case Improvement ->  ', max(relative_fidelity))\n",
    "    print('Worst Case Impact -> ', min(relative_fidelity))\n",
    "    return relative_fidelity\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "attractive-comment",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 468x165.6 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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xqi+FkejGRIEa978GZCjlLqhA4WHUmqLUmpkeETrP9Q3u1izq5KjLk8rheeP26s46vKwZlcl9c197w0qIuzduxeAb37zm9x///0ArF27ltzc3B7t++mnn2bBggU92sdARynFk+v2A/DkB/vpj1t86WtIMxgJVunFAQEnwEQkS0TuDp9I/QulFO/srcLVjrJri8urWPtFVVhuYs888wwFBQXExcWRlZXFokWLWLduXcjt/PnPf+auu+7qtjyBKCoqQkRa2dSvueYa1qxZ0yP9tbB9+3ZOPfVUAO6++25+//vf+/KcTidXXnkl+fn5iAhr167tUVm6woaiGt/DUd0xFxuLjvRIP/oaap+OrqH169czf/58kpOTSUtLY/HixRw6dKhH5emP5Ofnk56eTlNTky/tiSeeYN68eSG31fI7x8XFERcXR0ZGBhdeeCFvvPHGCX1GR0cTHx9PUlISp556Kn/+85/xer3d/TpA8ErvHqC9R7tsM39QcqjBgdMT2sl2uL2UNzi61e+jjz7K97//fX72s59RUVHBwYMH+fa3v83LL7/crXZDxePx9Gp/wbJp0yYKCgp872fOnNkq//TTT+ff//43mZmZfSFepzy5bj/HXMa5Peby8OQH+8Leh76GOqaja+jIkSPcfPPNFBUVceDAAeLj47nhhhv6StQ+xePx8Nhjj4WtvdraWhobG/n000+ZP38+l112GcuXL29V5pVXXqGhoYEDBw5wxx138Mtf/pIbb7wxLP0Hq/Q6mikcBnTvDt+P2VFR365Jsz3cXsX2ivou91lXV8fdd9/NH//4Ry6//HJiY2OJiIjgoosu4te//jUAGzZsYO7cuSQlJZGVlcUtt9yC0+kM2N7SpUu58847W6U9+OCDpKamkp+fz9NPP92q7Le+9S3OP/98YmNjeeedd1i9ejUzZswgISGBvLw8li1b5it/5plnApCUlERcXBwfffQRy5cv5/TTT/eV+fDDDzn55JNJTEzk5JNP5sMPP/TlzZs3j7vuuovTTjuN+Ph4FixYQFVVVafnqLCwkFmzZgHwySefMH36dF+e3W7n+9//PqeffjpWq7XTtnqam57aSP5PV7c63tlVSYsxQCl4e2flCWVueqrrO4Loa6h719CiRYtYvHgxCQkJxMTEcMstt/DBBx902uZg5Pbbb+eRRx6htrb2hLyOfpfOyMzM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\n",
      "text/plain": [
       "<Figure size 489.6x172.8 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "logname_cycle_1 = './characterization_logfiles/ibmq_toronto_single_cnot_char_3_18_20.log'\n",
    "logname_cycle_2 = './characterization_logfiles/ibmq_toronto_single_cnot_char_3_22_17.log'\n",
    "#### Note: to report the data for IBM Use: ####\n",
    "## logname_cycle_1 = './logfiles/ibmq_gua'\n",
    "## logname_cycle_2 = './logfiles/ibmq_toronto_ibmq_dd_id_cnot_char_3_22_18.log'\n",
    "\n",
    "characterization_data_cycle_1 = read_data_dictionary_from_logfile(logname_cycle_1)\n",
    "characterization_data_cycle_2 = read_data_dictionary_from_logfile(logname_cycle_2)\n",
    "\n",
    "angles = [0,'\\u03C0/3','\\u03C0/2','2\\u03C0/3','\\u03C0']\n",
    "legends = ['Calibration Cycle-1', 'Calibration Cycle-2']\n",
    "\n",
    "qubit_id ,link_id= 12,16\n",
    "curr_link = characterization_data_cycle_1['topology'][qubit_id][link_id]\n",
    "link_str = str(curr_link[0]) + '-' + str(curr_link[1])\n",
    "plot_title = 'Qubit: '+str(qubit_id) + ', CNOT: '+link_str\n",
    "font_size = 16\n",
    "yticks = [0.6,0.8,1.0]\n",
    "# Notes for later reference\n",
    "# './logfiles/ibmq_toronto_single_cnot_char_3_18_20.log' : set a threshold of 0.2 \n",
    "# [19:20], [1:7], [3:0,4,17], [5:0,1], [12: 1,7,10,17,18]->[state-dependent: 16,20], [14:10] , [15:2,5], [18,2,5,8]\n",
    "# logname = './logfiles/ibmq_toronto_single_cnot_char_3_19_0.log' : set a threshold of 0.2 \n",
    "# [1:1,7,23,24]\n",
    "\n",
    "plot_name='./final_plots_for_paper/negative_impact_of_dd.pdf'\n",
    "cycle_1_no_dd_pst,cycle_1_dd_pst = get_qubit_link_combination_data(characterization_data_cycle_1,qubit_id,link_id)\n",
    "cycle_2_no_dd_pst,cycle_2_dd_pst = get_qubit_link_combination_data(characterization_data_cycle_2,qubit_id,link_id)\n",
    "\n",
    "relative_fidelity_cycle_1 = [cycle_1_dd_pst[i]/cycle_1_no_dd_pst[i] for i in range(5)]\n",
    "relative_fidelity_cycle_2 = [cycle_2_dd_pst[i]/cycle_2_no_dd_pst[i] for i in range(5)]\n",
    "#print(relative_fidelity_cycle_1)\n",
    "#print(relative_fidelity_cycle_2)\n",
    "#dataplot([cycle_1_no_dd_pst,cycle_1_dd_pst,cycle_2_no_dd_pst,cycle_2_dd_pst],\n",
    "dataplot([relative_fidelity_cycle_1,relative_fidelity_cycle_2],         \n",
    "         legends=legends,ylabel='Relative Fidelity',xlabel='Rotation Angle (\\u03F4)',font_family='sans-serif',\n",
    "         yticks_fontsize=font_size,xticks_fontsize=font_size,xlabel_size=font_size,\n",
    "         ylabel_size=font_size,legend_size=font_size-2,plot_baseline=1.0,legend_loc='lower right',\n",
    "         figure_dim =[6.5,2.3],#ylim=[0.1,1.2],\n",
    "         plot_name=plot_name,plot_title=plot_title,title_fontsize=font_size-2,\n",
    "         #yticks_locs=yticks,yticks_labels=yticks,\n",
    "         palette_style='paired',xticks_labels=angles)\n",
    "baseline = np.ones(7)\n",
    "xpoints_0 = np.arange(5)\n",
    "xpoints_1 = np.arange(-1,6,1)\n",
    "fig, ax = plt.subplots(1, 1)\n",
    "plt.rcParams[\"font.family\"] ='sans-serif'\n",
    "fig.set_size_inches(6.8,2.4)\n",
    "colors = get_color_palette('paired',2)\n",
    "plt.plot(xpoints_0,relative_fidelity_cycle_1,color=colors[0],marker='o',markersize=14,linestyle='-.',label='Calibration #1')\n",
    "plt.plot(xpoints_0,relative_fidelity_cycle_2,color=colors[1],marker='*',markersize=14,linestyle='-',label='Calibration #2')\n",
    "plt.plot(xpoints_1,baseline,linestyle='--',color='#555555',label='No-DD')\n",
    "plt.xticks(xpoints_0, angles, fontsize=16);\n",
    "yticks = [0.5,1.0,1.5]\n",
    "plt.yticks(yticks, yticks, fontsize=16);\n",
    "plt.ylabel('Relative Fidelity',fontsize=16);\n",
    "plt.xlim(-0.1,4.1)\n",
    "plt.ylim(0.3,1.8)\n",
    "plt.title(plot_title,fontsize=16)\n",
    "plt.xlabel('Rotation Angle (\\u03F4)',fontsize=16);\n",
    "plt.legend(loc='upper center',ncol=3,fontsize= 12);\n",
    "plt.savefig(plot_name, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "senior-diving",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of Qubits  27\n",
      "Total combinations (qubit+link)  700\n",
      "Total Number of Characterization Circuits  7000\n",
      "Statistics-> Mean  1.0376992705663979  Median  1.0072276735835701  Std Dev  0.22783353028551334\n",
      "Best Case Improvement ->   6.48\n",
      "Worst Case Impact ->  0.18547595682041218\n",
      "Number of Qubits  27\n",
      "Total combinations (qubit+link)  700\n",
      "Total Number of Characterization Circuits  7000\n",
      "Statistics-> Mean  1.0323786382869957  Median  1.0126523461642782  Std Dev  0.23319798504658934\n",
      "Best Case Improvement ->   3.950354609929078\n",
      "Worst Case Impact ->  0.217787913340935\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "relative_data_1 = gather_characterization_statistics(characterization_data_cycle_1)\n",
    "relative_data_2 = gather_characterization_statistics(characterization_data_cycle_2)\n",
    "import seaborn as sns\n",
    "fig, ax = plt.subplots(1, 1)\n",
    "fig.set_size_inches(7,2.5)\n",
    "color_palette = get_color_palette('paired',Ncolors=2)\n",
    "sns.histplot(data=relative_data_2,bins=50,color=color_palette[1],label='CC-1')\n",
    "#sns.histplot(data=relative_data_2,bins=100,color=color_palette[1],label='CC-2')\n",
    "plt.rcParams[\"font.family\"] = 'sans-serif'\n",
    "plt.ylabel('Frequency',fontsize=18)\n",
    "plt.xlabel('Relative Fidelity',fontsize=18)\n",
    "plt.yscale('log')\n",
    "plt.yticks([1,10,100],[1,10,100],fontsize=16)\n",
    "ax.axvspan(1,4,alpha=0.5, color='#f4f5db',zorder=0)\n",
    "ax.axvline(x=1, linestyle='--',color='#C0C0C0')\n",
    "plt.xlim(0,4)\n",
    "textstr = 'DD\\nHelps'\n",
    "plt.text(1.6, 120, textstr, fontsize=16)\n",
    "ax.axvspan(0,1,alpha=0.5, color='#ffe6e6',zorder=0)\n",
    "plt.xlim(0,4)\n",
    "textstr = 'DD\\nHurts'\n",
    "plt.text(0.1, 120, textstr, fontsize=16)\n",
    "plt.xticks(fontsize=16);\n",
    "plot_name='./final_plots_for_paper/distribution_of_dd_impact.pdf'\n",
    "plt.savefig(plot_name, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "corrected-limitation",
   "metadata": {},
   "source": [
    "# Show the Trend in Fidelity for Different DD combinations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "preliminary-system",
   "metadata": {},
   "outputs": [],
   "source": [
    "def minimum_and_maximum_positions(a):\n",
    "    if type(a) is list:\n",
    "        minpos = a.index(min(a))\n",
    "        maxpos = a.index(max(a)) \n",
    "    else: #for numpy arrays\n",
    "        minpos = np.where(a == a.min())[0]\n",
    "        maxpos = np.where(a == a.max())[0]\n",
    "    return minpos,maxpos"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "organizational-apartment",
   "metadata": {},
   "outputs": [],
   "source": [
    "def determine_program_and_skeleton_fidelity_for_all_dd_combinations(in_data,dd_type=None):\n",
    "    '''\n",
    "    Function that outputs the fidelity of the actual circuit and the skeletons for all dd_combinations:\n",
    "    Useful to plot this data in the motivation section to make a case for searching the optimal DD\n",
    "    '''\n",
    "    \n",
    "    num_dd_sequences = 1 + len(in_data['all_dd_combinations']) # all combinations + 1 for no DD\n",
    "    dd_circ = np.zeros(num_dd_sequences)\n",
    "    dd_skeleton = np.zeros(num_dd_sequences)\n",
    "    \n",
    "    ideal_output_circ = in_data['ideal_counts_baseline']\n",
    "    ideal_output_skeleton = in_data['ideal_counts_skeleton']\n",
    "    \n",
    "    if dd_type is None: # choose xy4 data by default\n",
    "        circ_str = 'original'\n",
    "        skeleton_str = 'skeleton'\n",
    "    else:\n",
    "        circ_str = 'original_ibmq_dd'\n",
    "        skeleton_str = 'skeleton_ibmq_dd'\n",
    "    \n",
    "    for i in range(num_dd_sequences):\n",
    "        dd_circ[i] = get_evaluation_output(ideal_output_circ,in_data[circ_str][i]['counts'])\n",
    "        dd_skeleton[i] = get_evaluation_output(ideal_output_skeleton,in_data[skeleton_str][i]['counts'])\n",
    "        \n",
    "        \n",
    "    ## get the relative numbers : 0th array entry corresponds to No-DD, last entry corresponds to all-DD\n",
    "    rel_to_no_dd_circ = dd_circ/dd_circ[0]\n",
    "    rel_to_no_dd_skeleton = dd_skeleton/dd_skeleton[0] \n",
    "    \n",
    "    rel_to_all_dd_circ = dd_circ/dd_circ[num_dd_sequences-1]\n",
    "    rel_to_all_dd_skeleton = dd_skeleton/dd_skeleton[num_dd_sequences-1] \n",
    "    \n",
    "    evaluated_data = {'abs_for_circ': dd_circ, 'abs_for_skeleton': dd_skeleton,\n",
    "                      'rel_to_no_dd_circ': rel_to_no_dd_circ, 'rel_to_no_dd_skeleton': rel_to_no_dd_skeleton,\n",
    "                      'rel_to_all_dd_circ': rel_to_all_dd_circ, 'rel_to_all_dd_skeleton': rel_to_all_dd_skeleton}\n",
    "    return evaluated_data\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "swedish-consideration",
   "metadata": {},
   "source": [
    "**Showing the motivational data for optimal DD sequence is better than DD-for-all**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "id": "varied-first",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-.-.-.-.-.-.-.-.-.-.-.- Statistics for QFT-6  -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.\n",
      "Ratio of All-DD Fidelity to No-DD Fidelity : QFT-6  2.614430492204259\n",
      "Ratio of Optimal Fidelity to All DD Fidelity : QFT-6  2.5256575485213553\n",
      "Ratio of Optimal Fidelity to No DD Fidelity : QFT-6  6.60315610772009\n",
      "Most Optimal DD sequence  010100\n",
      "-.-.-.-.-.-.-.-.-.-.-.- Statistics for BV-6  -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.\n",
      "Ratio of All-DD Fidelity to No-DD Fidelity : BV6  0.8767502166171052\n",
      "Ratio of Optimal Fidelity to All DD Fidelity : BV-6  1.25739353167276\n",
      "Ratio of Optimal Fidelity to No DD Fidelity : BV-6  1.1024200512670392\n",
      "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.\n",
      "Most Optimal DD sequence  010100\n"
     ]
    },
    {
     "data": {
      "image/png": "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RenN8OHDW8TNzs7227g3NzezY8eOoHJcffXVPPzwwz6V6sMPP8yWLVtYvXo1VVVVLF++HACltCnVbrdz/fXXc/XVV/Pkk096zJsEItRn98b92TIyMsjLy/N4t9YKABbtTaARzZuA0z/0DePY3++IJjkuhn//bDxzTulP96RYRLS5bM4p/fn3z8aH7TuatLQ07r33Xm6++WY++OADbDYbBQUFXHLJJWRmZgZ0Pw6Viy66iPLychYuXIjdbueNN96gqKiICRMmBL32+eef59NPPyU5OTls8vji6quv5v7776e8vJzNmzfz7LPPMmvWLL9xn3/+eTZu3EhFRQX333+/K+7mzZt5//33qa+vx2az8dJLL7F8+XKmTJkSVIZLL72UJUuWcMkll7Q4V11dTWJiIunp6ZSVlXHfffd5nP/Tn/6EiPDCCy9wxx13cPXVV3uMdsL17IsXL2b3bu28UlhYyF133cVpp53mOj979mwef/xxDh48SHl5OY8++ijnnXeeKTksLMKCUuqI/I0ePVr5YuPGjT7DOxPPPfecGj58uIqPj1eAmjJlitq7d6/r/L333quuvPLKgPcA1LZt2wLGWb58uRoxYoRKTk5Wo0ePVsuXL/cbt1+/fuqjjz5qEW6z2RSgdu3apZRSaubMmequu+5SSim1dOlSlZub6/c+L730kho2bJjfNBsaGtTs2bNVt27dVM+ePdXDDz/sOldYWKiSk5NVYWGhK+zhhx9WPXv2VN26dVOzZs1SDQ0NSin9zseNG6dSUlJUWlqaGjNmjHrrrbf8phsof6+88kp17733KqWU2rt3r5oyZYpKTk5WgwYNUk899ZQClM1mU2vXrlXp6emud9Dc3KxOOeUUdf/994f92X//+9+r3NxclZSUpHJzc9V1112nSktLXfGbmprUz3/+c5WWlqays7PVzTffrOrr632m2xXqh0VkAdaqMLfHolR4PKY6G2PGjFFr165tEb5p0yaGDh3aARK1jvnz5zN37lxWrlxJ377hmQuysPBHV6sfFuFHRNYppQK7ZIaIX5uPiHyP7480W6CU6vTbA3RVZs+eTUxMDF988YWlaCwsLLokgSYX3mg3KSwC4v39hoWFhUVXwq+iUUrd5++chYWFhYWFWULaYVNExojIpSKSbBwnGys4W1hYWFhY+MTsxmfZwNvAOPS8zSBgJ/AI0ADc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\n",
      "text/plain": [
       "<Figure size 432x158.4 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "logname = './final_evaluations_logfiles/ibmq_toronto_QFT-6-E_4_7_10.log'\n",
    "read_data = read_data_dictionary_from_logfile(logname)\n",
    "evaluated_data_qft = determine_program_and_skeleton_fidelity_for_all_dd_combinations(read_data)\n",
    "\n",
    "logname = './final_evaluations_logfiles/excluded_from_plotting/ibmq_toronto_BV-6_4_8_12.log'\n",
    "read_data = read_data_dictionary_from_logfile(logname)\n",
    "evaluated_data_bv = determine_program_and_skeleton_fidelity_for_all_dd_combinations(read_data)\n",
    "\n",
    "## print statistics\n",
    "print('-.-.-.-.-.-.-.-.-.-.-.- Statistics for QFT-6  -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.')\n",
    "print('Ratio of All-DD Fidelity to No-DD Fidelity : QFT-6 ', evaluated_data_qft['rel_to_no_dd_circ'][-1])\n",
    "print('Ratio of Optimal Fidelity to All DD Fidelity : QFT-6 ', max(evaluated_data_qft['rel_to_all_dd_circ']))\n",
    "print('Ratio of Optimal Fidelity to No DD Fidelity : QFT-6 ', max(evaluated_data_qft['rel_to_no_dd_circ']))\n",
    "_, max_fidelity = minimum_and_maximum_positions(evaluated_data_qft['rel_to_no_dd_circ'])\n",
    "optimal_seq = get_key_from_decimal(max_fidelity[0],6)\n",
    "print('Most Optimal DD sequence ', optimal_seq)\n",
    "\n",
    "print('-.-.-.-.-.-.-.-.-.-.-.- Statistics for BV-6  -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.')\n",
    "\n",
    "print('Ratio of All-DD Fidelity to No-DD Fidelity : BV6 ', evaluated_data_bv['rel_to_no_dd_circ'][-1])\n",
    "print('Ratio of Optimal Fidelity to All DD Fidelity : BV-6 ', max(evaluated_data_bv['rel_to_all_dd_circ']))\n",
    "print('Ratio of Optimal Fidelity to No DD Fidelity : BV-6 ', max(evaluated_data_bv['rel_to_no_dd_circ']))\n",
    "print('-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.')\n",
    "_, max_fidelity = minimum_and_maximum_positions(evaluated_data_bv['rel_to_no_dd_circ'])\n",
    "optimal_seq = get_key_from_decimal(max_fidelity[0],6)\n",
    "print('Most Optimal DD sequence ', optimal_seq)\n",
    "min_qft = round(min(evaluated_data_qft['abs_for_circ']),2)\n",
    "max_qft = round(max(evaluated_data_qft['abs_for_circ']),2)\n",
    "\n",
    "min_bv = round(min(evaluated_data_bv['abs_for_circ']),2)\n",
    "max_bv = round(max(evaluated_data_bv['abs_for_circ']),2)\n",
    "qft_str = 'QFT-6 Min: '+ str(min_qft) + ' Max: ' + str(max_qft)\n",
    "bv_str = 'BV-6 Min: '+ str(min_bv) + ' Max: ' + str(max_bv)\n",
    " \n",
    "workloads = ['QFT-6' , 'BV-6']#, 'QAOA-6']\n",
    "workloads = [qft_str,bv_str]\n",
    "font_size = 14\n",
    "xticks_locs = [0,7,15,23,31,39,47,55,63]\n",
    "#xticks_locs = [16*i-1 for i in range(9)]\n",
    "xticks_labels = [str(i) for i in xticks_locs]\n",
    "xticks_labels[0]  = '0'\n",
    "#xticks_labels[-1] = '127\\n(All-DD)'\n",
    "#yticks = [0.2,0.4,0.6,0.8]\n",
    "\n",
    "\n",
    "dd_output_data = np.array([evaluated_data_qft['abs_for_circ'],evaluated_data_bv['abs_for_circ']])\n",
    "dataplot(dd_output_data,legends=workloads,figure_dim=[6,2.2],ylim=[0,1.4],\n",
    "                 palette_style='ygb_r',ylabel='Program Fidelity',xlabel='Qubit combinations on which DD pulses are applied',\n",
    "                 #yticks_locs=yticks,yticks_labels=yticks,\n",
    "                 font_family='sans-serif',\n",
    "                 legend_loc='upper left',\n",
    "                 yticks_fontsize=font_size,xticks_fontsize=font_size,marker_size=8,#xlim=[0,150],\n",
    "                 plot_name = './final_plots_for_paper/all_possible_dd_combinations.pdf',\n",
    "                 ylabel_size=font_size,xlabel_size=font_size,title_fontsize=font_size,legend_size=font_size-2,\n",
    "                 xticks_locs=xticks_locs,xticks_labels=xticks_labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "minor-eugene",
   "metadata": {},
   "source": [
    "**Showing that Decoy and Input Circuit Fidelities are correlated**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "id": "multiple-exemption",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x158.4 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "logname = './final_evaluations_logfiles/ibmq_toronto_QFT-6-A_4_6_21.log'\n",
    "read_data = read_data_dictionary_from_logfile(logname)\n",
    "evaluated_data = determine_program_and_skeleton_fidelity_for_all_dd_combinations(read_data)\n",
    "\n",
    "required_plotting_data = np.array([evaluated_data['abs_for_circ'],evaluated_data['abs_for_skeleton']])\n",
    "dataplot(required_plotting_data,legends=workloads,figure_dim=[6,2.2],#ylim=[0.1,0.87],\n",
    "                 palette_style='ygb_r',ylabel='Program Fidelity',xlabel='Qubit combinations on which DD pulses are applied',\n",
    "                 #yticks_locs=yticks,yticks_labels=yticks,\n",
    "                 font_family='sans-serif',#legend_cols=2,#legend_loc='upper center',\n",
    "                 yticks_fontsize=font_size,xticks_fontsize=font_size,marker_size=8,#xlim=[0,150],\n",
    "                 #plot_name = './final_plots_for_paper/all_possible_dd_combinations.pdf',\n",
    "                 ylabel_size=font_size,xlabel_size=font_size,title_fontsize=font_size,legend_size=font_size-2\n",
    "                 #xticks_locs=xticks_locs,xticks_labels=xticks_labels\n",
    "        )\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "prospective-illinois",
   "metadata": {},
   "source": [
    "## Final Evaluations for the Paper"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "id": "sufficient-compensation",
   "metadata": {},
   "outputs": [],
   "source": [
    "import networkx as nx\n",
    "def read_edge_list_from_qaoa_qasm(qasm_name):\n",
    "    ## in the current setting the qasms dump the graph edge list in the last line of the qasm\n",
    "    with open(qasm_name) as f:\n",
    "        last_line = f.readlines()[-1]\n",
    "    f.close()   \n",
    "    if last_line[0] == '/':\n",
    "        edge_list = ast.literal_eval(last_line[2:])\n",
    "        graph_edges = []\n",
    "        for edge_entry in edge_list:\n",
    "            edge = list(edge_entry)\n",
    "            edge = tuple([int(edge[0]),int(edge[1]), 1.0])\n",
    "            graph_edges.append(edge)\n",
    "\n",
    "        return graph_edges\n",
    "    else:\n",
    "        return None\n",
    "def create_graph(num_qregs,E):\n",
    "    V = np.arange(num_qregs)\n",
    "    G = nx.Graph()\n",
    "    G.add_nodes_from(V)\n",
    "    G.add_weighted_edges_from(E)\n",
    "    return G\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 257,
   "id": "indirect-exhibition",
   "metadata": {},
   "outputs": [],
   "source": [
    "def find_adapt_sequence_ids(num_qubits,max_block_size):\n",
    "    '''\n",
    "    Function to determine the ADAPT sequence IDs for a given block size\n",
    "    '''\n",
    "    if num_qubits%max_block_size == 0:\n",
    "        num_blocks = int(num_qubits/max_block_size)\n",
    "    else:\n",
    "        num_blocks = int(num_qubits/max_block_size)+1\n",
    "    \n",
    "    # qubits per block\n",
    "    qubits_per_block = [max_block_size for _ in range(num_blocks)]\n",
    "    if num_qubits%max_block_size != 0: ## different number of qubits in last block\n",
    "        qubits_per_block[-1] = num_qubits-(max_block_size*(num_blocks-1))\n",
    "    \n",
    "    blockwise_qubits = []\n",
    "    \n",
    "    # determine the specifc qubits in each block\n",
    "    for i in range(num_blocks):\n",
    "        _qubits_in_curr_block = []\n",
    "        for qubit in range(qubits_per_block[i]):\n",
    "            curr_qubit = i*max_block_size + qubit\n",
    "            _qubits_in_curr_block.append(curr_qubit)\n",
    "        _qubits_in_curr_block.reverse()\n",
    "        blockwise_qubits.append(_qubits_in_curr_block)\n",
    "   \n",
    "    adapt_sequences_structured, adapt_sequences_unstructured= [],[]\n",
    "    # generate the sequence ids\n",
    "    for block_id in range(num_blocks):\n",
    "        sequences_for_curr_block = []\n",
    "        curr_block_seq_limit = int(math.pow(2,qubits_per_block[block_id]))\n",
    "        for sequence_id in range(curr_block_seq_limit):\n",
    "            dd_seq = ['0' for _ in range(num_qubits)]\n",
    "            \n",
    "            bitstring = get_key_from_decimal(sequence_id,qubits_per_block[block_id])\n",
    "            \n",
    "            for qubit_id in range(len(blockwise_qubits[block_id])):\n",
    "                dd_seq[blockwise_qubits[block_id][qubit_id]] = bitstring[qubit_id]\n",
    "            dd_seq.reverse()\n",
    "            dd_seq_key = ''.join([str(elem) for elem in dd_seq])\n",
    "            sequence_id = convert_key_to_decimal(dd_seq_key,num_qubits)\n",
    "            \n",
    "            sequences_for_curr_block.append(sequence_id)\n",
    "            adapt_sequences_unstructured.append(sequence_id)\n",
    "        adapt_sequences_structured.append(sequences_for_curr_block)\n",
    "    \n",
    "    return adapt_sequences_structured, adapt_sequences_unstructured\n",
    "\n",
    "def sequence_update(old_sequence,update_sequence):\n",
    "    new_sequence = [c for c in old_sequence]\n",
    "    update_sequence = update_sequence[::-1]\n",
    "    for c in range(len(update_sequence)):\n",
    "        if update_sequence[c]=='1':\n",
    "            new_sequence[c] = '1'\n",
    "    return new_sequence\n",
    "\n",
    "def label_cleanup(given_labels):\n",
    "    '''\n",
    "    Remove the second hyphen from the workload names for a cleaner plot\n",
    "    '''\n",
    "    output_labels = []\n",
    "    for label in given_labels:\n",
    "        counter = label.count('-')\n",
    "        if counter==2:\n",
    "            label = label[::-1]\n",
    "            index = label.find('-')\n",
    "            label = label[:index] +  label[index+1:]\n",
    "            label = label[::-1]\n",
    "        output_labels.append(label)\n",
    "    return output_labels\n",
    "\n",
    "def majority_voted_bitstrings(string_1, string_2):\n",
    "    \n",
    "    majority_voted_string = ['0' for _ in range(len(string_1))]\n",
    "    for i in range(len(string_1)):\n",
    "        if string_1[i] == '1' or string_2[i] == '1':\n",
    "            majority_voted_string[i] = '1'\n",
    "    \n",
    "    majority_voted_string = ''.join([str(elem) for elem in majority_voted_string])    \n",
    "    majority_voted_string_seq = convert_key_to_decimal(majority_voted_string,len(string_1))\n",
    "    \n",
    "    return majority_voted_string , majority_voted_string_seq\n",
    "\n",
    "def extract_final_evaluations_data(final_data,adapt_block_size=None,show_log=0):\n",
    "    \n",
    "    feedback_path = 1 # 0 to turn off, 1 means feedback incorporated\n",
    "    \n",
    "    program = final_data['program_name']\n",
    "    # obtain number of qubits in the program\n",
    "    program_size = len(list(final_data['ideal_counts_baseline'].keys())[0])\n",
    "    \n",
    "    if adapt_block_size is None: # default\n",
    "        if program_size <=6:\n",
    "            adapt_block_size = 3\n",
    "        else:\n",
    "            adapt_block_size = 4\n",
    "    if show_log>0:\n",
    "        print('Program ', program, ' Size ', program_size)\n",
    "    \n",
    "    # ideal output baseline\n",
    "    ideal_output_baseline = final_data['ideal_counts_baseline']\n",
    "    if show_log>1:\n",
    "        print('Ideal Output ', ideal_output_baseline)\n",
    "        \n",
    "    # ideal output skeleton circuit\n",
    "    ideal_output_skeleton_circuit = final_data['ideal_counts_skeleton']\n",
    "    if show_log>1:\n",
    "        print('Ideal Output of Skeleton ', ideal_output_skeleton_circuit)\n",
    "    \n",
    "    # max DD combinations possible for search \n",
    "    search_space = int(math.pow(2,int(program_size)))\n",
    "    if show_log>0:\n",
    "        print('Total number of DD sequences possible ',search_space)\n",
    "    \n",
    "    \n",
    "    ###################################   NO DD Data    ######################################################\n",
    "    \n",
    "    no_dd_fidelity = fidelity_from_tvd(ideal_output_baseline, final_data['original'][0]['counts'])\n",
    "    if show_log>0:\n",
    "        print('No DD Fidelity ', no_dd_fidelity)\n",
    "        \n",
    "    if show_log>2:\n",
    "        print('No DD Circuit Output ', final_data['original'][0]['counts'])\n",
    "    \n",
    "    ###################################   ADAPT Data   ######################################################\n",
    "    \n",
    "    # Determine the ADAPT Sequence IDs\n",
    "    adapt_sequences, all_adapt_sequences = find_adapt_sequence_ids(program_size,adapt_block_size)\n",
    "    \n",
    "    adapt_predicted_string_xyxy = ['0' for _ in range(program_size)]\n",
    "    adapt_predicted_string_ibmq = ['0' for _ in range(program_size)]\n",
    "    \n",
    "    adapt_second_predicted_string_xyxy = ['0' for _ in range(program_size)]\n",
    "    adapt_second_predicted_string_ibmq = ['0' for _ in range(program_size)]\n",
    "    \n",
    "    \n",
    "    if show_log>1:\n",
    "        print('ADAPT Sequences ', adapt_sequences)\n",
    "        \n",
    "    # Shortlist the skeleton circuit outputs for the ADAPT chosen sequences \n",
    "    xyxy_adapt_skeleton_fidelities = np.zeros(len(adapt_sequences))\n",
    "    ibmq_adapt_skeleton_fidelities = np.zeros(len(adapt_sequences))\n",
    "    for adapt_group in range(len(adapt_sequences)):\n",
    "        # only look at the sequences in the current block\n",
    "        \n",
    "        xyxy_adapt_skeleton_fidelities = np.zeros(len(adapt_sequences[adapt_group]))\n",
    "        ibmq_adapt_skeleton_fidelities = np.zeros(len(adapt_sequences[adapt_group]))\n",
    "        for adapt_dd_seq_id in range(len(adapt_sequences[adapt_group])):\n",
    "            ## this feedback thing is really helpful imo for large workloads\n",
    "            \n",
    "            if feedback_path: # keep updating the adapt sequence after finding the best from each group\n",
    "                curr_seq = get_key_from_decimal(adapt_sequences[adapt_group][adapt_dd_seq_id],program_size)\n",
    "                curr_seq_with_feedback = sequence_update(adapt_predicted_string_xyxy,curr_seq)\n",
    "                curr_seq_with_feedback.reverse()\n",
    "                curr_seq_with_feedback_id = convert_key_to_decimal(curr_seq_with_feedback,program_size)\n",
    "                xyxy_skeleton_output_dict = final_data['skeleton'][curr_seq_with_feedback_id]['counts']\n",
    "                ibmq_skeleton_output_dict = final_data['skeleton_ibmq_dd'][curr_seq_with_feedback_id]['counts']\n",
    "                xyxy_adapt_skeleton_fidelities[adapt_dd_seq_id] = fidelity_from_tvd(ideal_output_skeleton_circuit,xyxy_skeleton_output_dict)\n",
    "                ibmq_adapt_skeleton_fidelities[adapt_dd_seq_id] = fidelity_from_tvd(ideal_output_skeleton_circuit,ibmq_skeleton_output_dict)\n",
    "            else:\n",
    "                xyxy_skeleton_output_dict = final_data['skeleton'][adapt_sequences[adapt_group][adapt_dd_seq_id]]['counts']\n",
    "                ibmq_skeleton_output_dict = final_data['skeleton_ibmq_dd'][adapt_sequences[adapt_group][adapt_dd_seq_id]]['counts']\n",
    "                xyxy_adapt_skeleton_fidelities[adapt_dd_seq_id] = fidelity_from_tvd(ideal_output_skeleton_circuit,xyxy_skeleton_output_dict)\n",
    "                ibmq_adapt_skeleton_fidelities[adapt_dd_seq_id] = fidelity_from_tvd(ideal_output_skeleton_circuit,ibmq_skeleton_output_dict)\n",
    "\n",
    "\n",
    "        if show_log>2:\n",
    "            print('Current Group ID', adapt_group , ' Group Sequences ',  adapt_sequences[adapt_group])\n",
    "            print('All Fidelities XYXY ', xyxy_adapt_skeleton_fidelities, ' IBMQ ', ibmq_adapt_skeleton_fidelities)\n",
    "        # Find the optimal sequence ID from the skeletons\n",
    "        _, _xyxy_predicted_seq_id = minimum_and_maximum_positions(xyxy_adapt_skeleton_fidelities)\n",
    "        _, _ibmq_predicted_seq_id = minimum_and_maximum_positions(ibmq_adapt_skeleton_fidelities)\n",
    "        \n",
    "        # second best sequence from current lot\n",
    "        xyxy_adapt_skeleton_fidelities[_xyxy_predicted_seq_id[0]] = -1\n",
    "        ibmq_adapt_skeleton_fidelities[_ibmq_predicted_seq_id[0]] = -1\n",
    "        _, _xyxy_second_predicted_seq_id = minimum_and_maximum_positions(xyxy_adapt_skeleton_fidelities)\n",
    "        _, _ibmq_second_predicted_seq_id = minimum_and_maximum_positions(ibmq_adapt_skeleton_fidelities)\n",
    "        \n",
    "        \n",
    "        if show_log>3:\n",
    "            print('Best Sequence Index in Current Group XYXY ', _xyxy_predicted_seq_id[0], ' IBMQ ',  _ibmq_predicted_seq_id[0])\n",
    "            #print(max(xyxy_adapt_skeleton_fidelities))\n",
    "        curr_best_xyxy_sequence = adapt_sequences[adapt_group][_xyxy_predicted_seq_id[0]]\n",
    "        curr_best_ibmq_sequence = adapt_sequences[adapt_group][_ibmq_predicted_seq_id[0]]\n",
    "        \n",
    "        curr_second_best_xyxy_sequence = adapt_sequences[adapt_group][_xyxy_second_predicted_seq_id[0]]\n",
    "        curr_second_best_ibmq_sequence = adapt_sequences[adapt_group][_ibmq_second_predicted_seq_id[0]]\n",
    "        \n",
    "        \n",
    "        if show_log>3: \n",
    "            print('Best Sequence in Current Group XYXY ', curr_best_xyxy_sequence, ' IBMQ ',  curr_best_ibmq_sequence)\n",
    "            print('Second Best Sequence in Current Group XYXY ', curr_second_best_xyxy_sequence, ' IBMQ ', curr_second_best_ibmq_sequence)\n",
    "        \n",
    "        ## do a global update for the bits\n",
    "        curr_best_xyxy_bitstring = get_key_from_decimal(curr_best_xyxy_sequence,program_size)\n",
    "        curr_best_ibmq_bitstring = get_key_from_decimal(curr_best_ibmq_sequence,program_size)\n",
    "        \n",
    "        ## current second best string \n",
    "        curr_second_best_xyxy_bitstring = get_key_from_decimal(curr_second_best_xyxy_sequence,program_size)\n",
    "        curr_second_best_ibmq_bitstring = get_key_from_decimal(curr_second_best_ibmq_sequence,program_size)\n",
    "        \n",
    "        \n",
    "        if show_log>3:\n",
    "            print('Best Sequence Bitstrings for Current Group XYXY ', curr_best_xyxy_bitstring, ' IBMQ ', curr_best_ibmq_bitstring)\n",
    "            print('Second Best Sequence Bitstrings for Current Group XYXY ', curr_second_best_xyxy_bitstring, ' IBMQ ', curr_second_best_ibmq_bitstring)\n",
    "            \n",
    "\n",
    "        adapt_predicted_string_xyxy = sequence_update(adapt_predicted_string_xyxy,curr_best_xyxy_bitstring)\n",
    "        adapt_predicted_string_ibmq = sequence_update(adapt_predicted_string_ibmq,curr_best_ibmq_bitstring)\n",
    "        \n",
    "        adapt_second_predicted_string_xyxy = sequence_update(adapt_second_predicted_string_xyxy,curr_second_best_xyxy_bitstring)\n",
    "        adapt_second_predicted_string_ibmq = sequence_update(adapt_second_predicted_string_ibmq,curr_second_best_ibmq_bitstring)\n",
    "        \n",
    "        \n",
    "    # Post final update -> reverse the list and then obtain the decimal id\n",
    "    adapt_predicted_string_xyxy.reverse()\n",
    "    adapt_predicted_string_ibmq.reverse()\n",
    "    \n",
    "    adapt_second_predicted_string_xyxy.reverse()\n",
    "    adapt_second_predicted_string_ibmq.reverse()\n",
    "    \n",
    "    xyxy_predicted_seq = ''.join([str(elem) for elem in adapt_predicted_string_xyxy])\n",
    "    ibmq_predicted_seq = ''.join([str(elem) for elem in adapt_predicted_string_ibmq])\n",
    "    xyxy_predicted_seq_id = convert_key_to_decimal(xyxy_predicted_seq,program_size)\n",
    "    ibmq_predicted_seq_id = convert_key_to_decimal(ibmq_predicted_seq,program_size)\n",
    "    \n",
    "    xyxy_second_predicted_seq = ''.join([str(elem) for elem in adapt_second_predicted_string_xyxy])\n",
    "    ibmq_second_predicted_seq = ''.join([str(elem) for elem in adapt_second_predicted_string_ibmq])\n",
    "    \n",
    "    \n",
    "    if show_log>0:\n",
    "        print('Final Prediction Sequence from ADAPT XYXY ', xyxy_predicted_seq, 'IBMQ ', ibmq_predicted_seq)\n",
    "        #print('Second Prediction Sequence from ADAPT XYXY ', xyxy_second_predicted_seq, 'IBMQ ', ibmq_second_predicted_seq)\n",
    "    \n",
    "    if program_size>5: ## for larger programs it makes more sense to use majority vote because SDCs are sometimes insensitive\n",
    "        xyxy_predicted_seq, xyxy_predicted_seq_id = majority_voted_bitstrings(xyxy_predicted_seq,xyxy_second_predicted_seq)  \n",
    "        ibmq_predicted_seq, ibmq_predicted_seq_id = majority_voted_bitstrings(ibmq_predicted_seq, ibmq_second_predicted_seq)\n",
    "\n",
    "    \n",
    "    if show_log>0:\n",
    "        print('ADAPT Block Size ' , adapt_block_size)\n",
    "        print('Number of ADAPT Sequences ', len(all_adapt_sequences))\n",
    "        print('ADAPT Predicted Sequence XYXY ', xyxy_predicted_seq_id, ': ', xyxy_predicted_seq, ' IBMQ ', ibmq_predicted_seq_id, ': ', ibmq_predicted_seq)\n",
    "    \n",
    "    \n",
    "    # what is the optimal fidelity from ADAPT of the real circuit ?\n",
    "    xyxy_true_circuit_dict = final_data['original'][xyxy_predicted_seq_id]['counts']\n",
    "    ibmq_true_circuit_dict = final_data['original_ibmq_dd'][ibmq_predicted_seq_id]['counts']\n",
    "    \n",
    "    xyxy_adapt_fidelity = fidelity_from_tvd(ideal_output_baseline, xyxy_true_circuit_dict)\n",
    "    ibmq_adapt_fidelity = fidelity_from_tvd(ideal_output_baseline, ibmq_true_circuit_dict)\n",
    "    \n",
    "    if show_log>0:\n",
    "        print('ADAPT Predicted Sequence Fidelity XYXY ', xyxy_adapt_fidelity, ' IBMQ ', ibmq_adapt_fidelity)\n",
    "    if show_log>2:\n",
    "        print('ADAPT Output Histogram XYXY ', xyxy_true_circuit_dict)\n",
    "        print('ADAPT Output Histogram IBMQ ', ibmq_true_circuit_dict)\n",
    "    \n",
    "    ###################################   Exhaustive   ######################################################\n",
    "    \n",
    "    xyxy_skeleton_all_fidelities = np.zeros(search_space)\n",
    "    ibmq_skeleton_all_fidelities = np.zeros(search_space)\n",
    "    for skeleton_seq_id in range(search_space):\n",
    "        xyxy_counts = final_data['skeleton'][skeleton_seq_id]['counts']\n",
    "        ibmq_counts = final_data['skeleton_ibmq_dd'][skeleton_seq_id]['counts']\n",
    "        \n",
    "        xyxy_skeleton_all_fidelities[skeleton_seq_id] = fidelity_from_tvd(ideal_output_skeleton_circuit, xyxy_counts)\n",
    "        ibmq_skeleton_all_fidelities[skeleton_seq_id] = fidelity_from_tvd(ideal_output_skeleton_circuit, ibmq_counts)\n",
    "        \n",
    "    # Find the optimal sequence ID from all the skeletons\n",
    "    _, _xyxy_exhaustive_search_seq_id = minimum_and_maximum_positions(xyxy_skeleton_all_fidelities)\n",
    "    _, _ibmq_exhaustive_search_seq_id = minimum_and_maximum_positions(ibmq_skeleton_all_fidelities)\n",
    "    xyxy_exhaustive_search_seq_id = _xyxy_exhaustive_search_seq_id[0]\n",
    "    ibmq_exhaustive_search_seq_id = _ibmq_exhaustive_search_seq_id[0]\n",
    "    \n",
    "    xyxy_true_circuit_dict = final_data['original'][xyxy_exhaustive_search_seq_id]['counts']\n",
    "    ibmq_true_circuit_dict = final_data['original_ibmq_dd'][ibmq_exhaustive_search_seq_id]['counts']\n",
    "    xyxy_exhaustive_search_seq = get_key_from_decimal(xyxy_exhaustive_search_seq_id,program_size)\n",
    "    ibmq_exhaustive_search_seq = get_key_from_decimal(ibmq_exhaustive_search_seq_id,program_size)\n",
    "    \n",
    "    xyxy_exhaustive_search_fidelity = fidelity_from_tvd(ideal_output_baseline, xyxy_true_circuit_dict)\n",
    "    ibmq_exhaustive_search_fidelity = fidelity_from_tvd(ideal_output_baseline, ibmq_true_circuit_dict)\n",
    "    \n",
    "    if show_log>0:\n",
    "        print('Exhaustive Decoy Search Sequence Id XYXY ', xyxy_exhaustive_search_seq_id, ': ',xyxy_exhaustive_search_seq, ' IBMQ ', ibmq_exhaustive_search_seq_id, ': ', ibmq_exhaustive_search_seq)\n",
    "        print('Exhaustive Decoy Search Fidelity XYXY ', xyxy_exhaustive_search_fidelity, ' IBMQ ', ibmq_exhaustive_search_fidelity)\n",
    "        \n",
    "    ###################################   All-DD Data  ######################################################\n",
    "    \n",
    "    xyxy_all_dd_circuit_dict = final_data['original'][search_space-1]['counts'] # last sequence \n",
    "    ibmq_all_dd_circuit_dict = final_data['original_ibmq_dd'][search_space-1]['counts']\n",
    "    xyxy_all_dd_fidelity = fidelity_from_tvd(ideal_output_baseline, xyxy_all_dd_circuit_dict)\n",
    "    ibmq_all_dd_fidelity = fidelity_from_tvd(ideal_output_baseline, ibmq_all_dd_circuit_dict)\n",
    "    \n",
    "    if show_log>0:\n",
    "        print('All-DD Fidelity XYXY ', xyxy_all_dd_fidelity, ' IBMQ ', ibmq_all_dd_fidelity)\n",
    "    if show_log>2:\n",
    "        print('All DD Output XYXY ', xyxy_all_dd_circuit_dict)\n",
    "        print('All DD Output IBMQ ', ibmq_all_dd_circuit_dict)\n",
    "        print('Gate Cost Baseline : ', final_data['original'][0]['gate_cost'], ' All-DD XYXY ', final_data['original'][search_space-1]['gate_cost'], ' All-DD IBMQ ', final_data['original_ibmq_dd'][search_space-1]['gate_cost'])\n",
    "    ###################################  Runtime Best  ######################################################\n",
    "    \n",
    "    xyxy_exhaustive_fidelities = np.zeros(search_space)\n",
    "    ibmq_exhaustive_fidelities = np.zeros(search_space)\n",
    "    for sequence_id in range(search_space):\n",
    "        xyxy_counts = final_data['original'][sequence_id]['counts']\n",
    "        ibmq_counts = final_data['original_ibmq_dd'][sequence_id]['counts']\n",
    "        \n",
    "        xyxy_exhaustive_fidelities[sequence_id] = fidelity_from_tvd(ideal_output_baseline, xyxy_counts)\n",
    "        ibmq_exhaustive_fidelities[sequence_id] = fidelity_from_tvd(ideal_output_baseline, ibmq_counts)\n",
    "        \n",
    "    ## find the sequence id of the run time best\n",
    "    _, _xyxy_runtime_best_seq_id = minimum_and_maximum_positions(xyxy_exhaustive_fidelities)\n",
    "    _, _ibmq_runtime_best_seq_id = minimum_and_maximum_positions(ibmq_exhaustive_fidelities)\n",
    "    \n",
    "    xyxy_runtime_best_fidelity = max(xyxy_exhaustive_fidelities)\n",
    "    ibmq_runtime_best_fidelity = max(ibmq_exhaustive_fidelities)\n",
    "    \n",
    "    xyxy_runtime_best_seq_id = get_key_from_decimal(_xyxy_runtime_best_seq_id[0],program_size)\n",
    "    ibmq_runtime_best_seq_id = get_key_from_decimal(_ibmq_runtime_best_seq_id[0],program_size)\n",
    "    \n",
    "    \n",
    "    if show_log>0:\n",
    "        print('Runtime Best Sequence XYXY ' , _xyxy_runtime_best_seq_id[0], ': ', xyxy_runtime_best_seq_id, ' IBMQ ', _ibmq_runtime_best_seq_id[0], ': ', ibmq_runtime_best_seq_id)\n",
    "        print('Runtime Best Fidelity XYXY ' , xyxy_runtime_best_fidelity , ' IBMQ ', ibmq_runtime_best_fidelity)\n",
    "    \n",
    "    xyxy_fidelities = [no_dd_fidelity, xyxy_all_dd_fidelity, xyxy_adapt_fidelity, xyxy_exhaustive_search_fidelity, xyxy_runtime_best_fidelity]\n",
    "    ibmq_fidelities = [no_dd_fidelity, ibmq_all_dd_fidelity, ibmq_adapt_fidelity, ibmq_exhaustive_search_fidelity, ibmq_runtime_best_fidelity]\n",
    "    \n",
    "    xyxy_sequences = [0, search_space-1, xyxy_predicted_seq_id, xyxy_exhaustive_search_seq_id, xyxy_runtime_best_seq_id]\n",
    "    ibmq_sequences = [0, search_space-1, ibmq_predicted_seq_id, ibmq_exhaustive_search_seq_id, ibmq_runtime_best_fidelity]\n",
    "    \n",
    "    # all DD, adapt , exhaustive, runtime \n",
    "   \n",
    "    relative_fidelities_xyxy = np.array([xyxy_all_dd_fidelity,xyxy_adapt_fidelity,xyxy_exhaustive_search_fidelity,xyxy_runtime_best_fidelity])/no_dd_fidelity\n",
    "    relative_fidelities_ibmq = np.array([ibmq_all_dd_fidelity,ibmq_adapt_fidelity,ibmq_exhaustive_search_fidelity,ibmq_runtime_best_fidelity])/no_dd_fidelity\n",
    "    \n",
    "    relative_xyxy_performance_adapt = np.zeros(2)\n",
    "    relative_xyxy_performance_adapt[0] = xyxy_adapt_fidelity/no_dd_fidelity\n",
    "    relative_xyxy_performance_adapt[1] = xyxy_adapt_fidelity/xyxy_all_dd_fidelity\n",
    "    \n",
    "    relative_ibmq_performance_adapt = np.zeros(2) # numbers for IBMQ sequence\n",
    "    relative_ibmq_performance_adapt[0] = ibmq_adapt_fidelity/no_dd_fidelity\n",
    "    relative_ibmq_performance_adapt[1] = ibmq_adapt_fidelity/ibmq_all_dd_fidelity\n",
    "    \n",
    "    \n",
    "    ## additional data for EEV - only specific to the QAOA benchmarks\n",
    "    if 'QAOA' in program:\n",
    "        ## check if there exists the edge list for this program\n",
    "        qaoa_program = '../personal_workarea/benchmarks_for_final_evaluation/'+program+'.qasm'\n",
    "        ## read in the edge list\n",
    "        edge_list = read_edge_list_from_qaoa_qasm(qaoa_program)\n",
    "        if edge_list is not None: ## we have the graph input\n",
    "            input_graph = create_graph(program_size,edge_list)\n",
    "            \n",
    "            _no_dd_output = final_data['original'][0]['counts']\n",
    "            _all_dd_xyxy_output = final_data['original'][search_space-1]['counts']\n",
    "            _adapt_xyxy_output = final_data['original'][xyxy_predicted_seq_id]['counts']\n",
    "            _runtime_best_xyxy_output = final_data['original'][_xyxy_runtime_best_seq_id[0]]['counts']\n",
    "            \n",
    "            eev_no_dd = obtain_approximation_ratio_gap(ideal_output_baseline, _no_dd_output, input_graph)\n",
    "            eev_all_dd = obtain_approximation_ratio_gap(ideal_output_baseline, _all_dd_xyxy_output, input_graph)\n",
    "            eev_adapt = obtain_approximation_ratio_gap(ideal_output_baseline, _adapt_xyxy_output, input_graph)\n",
    "            eev_runtime = obtain_approximation_ratio_gap(ideal_output_baseline, _runtime_best_xyxy_output, input_graph)\n",
    "            \n",
    "            _no_dd_output = final_data['original_ibmq_dd'][0]['counts']\n",
    "            _all_dd_ibmq_output = final_data['original_ibmq_dd'][search_space-1]['counts']\n",
    "            _adapt_ibmq_output = final_data['original_ibmq_dd'][ibmq_predicted_seq_id]['counts']\n",
    "            _runtime_best_ibmq_output = final_data['original_ibmq_dd'][_ibmq_runtime_best_seq_id[0]]['counts']\n",
    "            \n",
    "            eev_no_dd_ibmq = obtain_approximation_ratio_gap(ideal_output_baseline, _no_dd_output, input_graph)\n",
    "            eev_all_dd_ibmq = obtain_approximation_ratio_gap(ideal_output_baseline, _all_dd_ibmq_output, input_graph)\n",
    "            eev_adapt_ibmq = obtain_approximation_ratio_gap(ideal_output_baseline, _adapt_ibmq_output, input_graph)\n",
    "            eev_runtime_ibmq = obtain_approximation_ratio_gap(ideal_output_baseline, _runtime_best_ibmq_output, input_graph)\n",
    "            \n",
    "            \n",
    "            eev = {'no_dd_xyxy': eev_no_dd, 'all_dd_xyxy': eev_all_dd, 'adapt_xyxy': eev_adapt, 'runtime_best_xyxy': eev_runtime,\n",
    "                  'no_dd_ibmq': eev_no_dd_ibmq, 'all_dd_ibmq': eev_all_dd_ibmq, 'adapt_ibmq': eev_adapt_ibmq, 'runtime_best_ibmq': eev_runtime_ibmq}\n",
    "        else:\n",
    "            eev = None\n",
    "    else:\n",
    "        eev = None\n",
    "    #print('Relative Numbers ', relative_fidelities_xyxy, relative_fidelities_ibmq)\n",
    "    \n",
    "    report = {'program': program, 'size': program_size, \n",
    "              'xyxy_fidelities': xyxy_fidelities, 'ibmq_fidelities': ibmq_fidelities, \n",
    "              'rel_xyxy_fidelities': relative_fidelities_xyxy, 'rel_ibmq_fidelities': relative_fidelities_ibmq, \n",
    "              'num_decoy_circuits': len(adapt_sequences), 'total_decoy_circuits': search_space,\n",
    "              'xyxy_sequences': xyxy_sequences, 'ibmq_sequences': ibmq_sequences,\n",
    "              'relative_xyxy_performance_adapt': relative_xyxy_performance_adapt,\n",
    "              'relative_ibmq_performance_adapt':relative_ibmq_performance_adapt,\n",
    "              'eev': eev}\n",
    "    \n",
    "    return report\n",
    "    \n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "id": "explicit-belfast",
   "metadata": {},
   "outputs": [],
   "source": [
    "ibmq_names = {'ibmq_guadalupe': 'IBMQ-Guadalupe', 'ibmq_manhattan': 'IBMQ-Manhattan',\n",
    "                  'ibmq_rome': 'IBMQ-Rome','ibmq_bogota': 'IBMQ-Bogota','ibmq_belem':'IBMQ-Belem','ibmq_quito':'IBMQ-Quito',\n",
    "                  'ibmq_paris': 'IBMQ-Paris', 'ibmq_toronto': 'IBMQ-Toronto', 'ibmq_casablanca': 'IBMQ-Casablanca'}\n",
    "'''\n",
    "Wrapper script to obtain all the required data\n",
    "'''\n",
    "def final_evaluation_data_generation_wrapper(machine):\n",
    "    ## compare the results from each machine\n",
    "    ibmq_names = {'ibmq_guadalupe': 'IBMQ-Guadalupe', 'ibmq_manhattan': 'IBMQ-Manhattan',\n",
    "                  'ibmq_rome': 'IBMQ-Rome','ibmq_bogota': 'IBMQ-Bogota','ibmq_belem':'IBMQ-Belem','ibmq_quito':'IBMQ-Quito',\n",
    "                  'ibmq_paris': 'IBMQ-Paris', 'ibmq_toronto': 'IBMQ-Toronto', 'ibmq_casablanca': 'IBMQ-Casablanca'}\n",
    "    #machine = 'ibmq_rome'\n",
    "    num_bars = 4\n",
    "    files = './final_evaluations_logfiles/' + machine+'*.log'\n",
    "    filelist =  sorted(glob.glob(files))\n",
    "    print('Number of programs evaluated for ', machine, ' :', len(filelist))\n",
    "    ## collect data for plotting\n",
    "\n",
    "    relative_xyxy_fidelity_data = np.zeros((num_bars,len(filelist)+1))\n",
    "    relative_ibmq_fidelity_data = np.zeros((num_bars,len(filelist)+1)) # one extra entry for GMEAN\n",
    "    \n",
    "    #adapt to 0: No-DD and 1: All-DD\n",
    "    relative_xyxy_results_for_adapt =np.zeros((2,len(filelist)+1))\n",
    "    relative_ibmq_results_for_adapt =np.zeros((2,len(filelist)+1))\n",
    "    \n",
    "    workload_labels = []\n",
    "    for logfile_id in range(len(filelist)):\n",
    "        logname = filelist[logfile_id]\n",
    "        #print(logname)\n",
    "        read_data = read_data_dictionary_from_logfile(logname)\n",
    "        evaluated_data = extract_final_evaluations_data(read_data)\n",
    "        workload_labels.append(evaluated_data['program'])\n",
    "        for i in range(num_bars):\n",
    "            relative_xyxy_fidelity_data[i][logfile_id] = evaluated_data['rel_xyxy_fidelities'][i]\n",
    "            relative_ibmq_fidelity_data[i][logfile_id] = evaluated_data['rel_ibmq_fidelities'][i]\n",
    "        relative_xyxy_results_for_adapt[0][logfile_id] = evaluated_data['relative_xyxy_performance_adapt'][0]\n",
    "        relative_xyxy_results_for_adapt[1][logfile_id] = evaluated_data['relative_xyxy_performance_adapt'][1]\n",
    "        relative_ibmq_results_for_adapt[0][logfile_id] = evaluated_data['relative_ibmq_performance_adapt'][0]\n",
    "        relative_ibmq_results_for_adapt[1][logfile_id] = evaluated_data['relative_ibmq_performance_adapt'][1]\n",
    "        \n",
    "        \n",
    "    '''\n",
    "    Add Gmean data for plotting\n",
    "    ''' \n",
    "    workload_labels.append('GMean')\n",
    "    workload_labels = label_cleanup(workload_labels)\n",
    "    for i in range(num_bars):\n",
    "        relative_xyxy_fidelity_data[i][-1] = gmean(relative_xyxy_fidelity_data[i][0:len(filelist)-1])\n",
    "        relative_ibmq_fidelity_data[i][-1] = gmean(relative_ibmq_fidelity_data[i][0:len(filelist)-1])\n",
    "        if i <2:\n",
    "            relative_xyxy_results_for_adapt[i][-1] = gmean(relative_xyxy_results_for_adapt[i][0:len(filelist)-1])\n",
    "            relative_ibmq_results_for_adapt[i][-1] = gmean(relative_ibmq_results_for_adapt[i][0:len(filelist)-1])\n",
    "    \n",
    "    ## statistics \n",
    "    print('-------------- XYXY Statistics -----------')\n",
    "    print('GMean All DD: ', relative_xyxy_fidelity_data[0][-1], ' ADAPT ', relative_xyxy_fidelity_data[1][-1] , ' Runtime Best', relative_xyxy_fidelity_data[3][-1])\n",
    "    print('Max improvement All DD ', max(relative_xyxy_fidelity_data[0]), ' ADAPT ', max(relative_xyxy_fidelity_data[1]), ' Runtime Best ', max(relative_xyxy_fidelity_data[3]))\n",
    "    \n",
    "    print('-------------- IBMQ-DD Statistics -----------')\n",
    "    print('GMean All DD: ', relative_ibmq_fidelity_data[0][-1], ' ADAPT ', relative_ibmq_fidelity_data[1][-1] , ' Runtime Best', relative_ibmq_fidelity_data[3][-1])\n",
    "    print('Max improvement All DD ', max(relative_ibmq_fidelity_data[0]), ' ADAPT ', max(relative_ibmq_fidelity_data[1]), ' Runtime Best ', max(relative_ibmq_fidelity_data[3]))\n",
    "    \n",
    "    \n",
    "    \n",
    "    print('----------- Relative Statistics ----------')\n",
    "    print('XYXY: ADAPT to No-DD : Gmean : ', relative_xyxy_results_for_adapt[0][-1], ' Max: ', max(relative_xyxy_results_for_adapt[0]))\n",
    "    print('XYXY: ADAPT to All-DD : Gmean : ', relative_xyxy_results_for_adapt[1][-1], ' Max: ', max(relative_xyxy_results_for_adapt[1]))\n",
    "    print('IBMQ-DD: ADAPT to No-DD : Gmean : ', relative_ibmq_results_for_adapt[0][-1], ' Max: ', max(relative_ibmq_results_for_adapt[0]))\n",
    "    print('IBMQ-DD: ADAPT to All-DD : Gmean : ', relative_ibmq_results_for_adapt[1][-1], ' Max: ', max(relative_ibmq_results_for_adapt[1]))\n",
    "    \n",
    "    \n",
    "    \n",
    "    return relative_xyxy_fidelity_data, relative_ibmq_fidelity_data, workload_labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 265,
   "id": "toxic-hydrogen",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running Sims for  ibmq_toronto\n",
      "Number of programs evaluated for  ibmq_toronto  : 5\n",
      "-------------- XYXY Statistics -----------\n",
      "GMean All DD:  1.1614676676096762  ADAPT  1.5150544865334898  Runtime Best 2.1376968808408527\n",
      "Max improvement All DD  2.614430492204259  ADAPT  3.0597517522745683  Runtime Best  6.60315610772009\n",
      "-------------- IBMQ-DD Statistics -----------\n",
      "GMean All DD:  1.3300384002212797  ADAPT  1.4700601878913022  Runtime Best 1.638270185565341\n",
      "Max improvement All DD  2.2908679564063386  ADAPT  2.6674180851746505  Runtime Best  3.325817112721639\n",
      "----------- Relative Statistics ----------\n",
      "XYXY: ADAPT to No-DD : Gmean :  1.5150544865334898  Max:  3.0597517522745683\n",
      "XYXY: ADAPT to All-DD : Gmean :  1.3044310477032066  Max:  1.8885750531997703\n",
      "IBMQ-DD: ADAPT to No-DD : Gmean :  1.4700601878913022  Max:  2.6674180851746505\n",
      "IBMQ-DD: ADAPT to All-DD : Gmean :  1.1052765000218991  Max:  1.2192881732745748\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0YAAADLCAYAAABK4oODAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABKq0lEQVR4nO3dd3wcxfnH8c9jyU3uHcm2MJgaDKYY05EhYGLTewsECKEFCBhIKOYXIAFDEnoLhI7pkFBMcQLEQDDNNjHdAeMiLLn3JlnW8/tj9szp1O5kSSfpvu/X617W7c7uztye57mZnZ01d0dERERERCSTtUp3BkRERERERNJNDSMREREREcl4ahiJiIiIiEjGU8NIREREREQyXna6MyAiTcvkyZPbZGdn/w3YG8hKd35ERBpAuZnNLSsru3bnnXcen+7MiEjTYJqVTkTiffrpp7/p2rXrBZtuuumyVq1aqYIQkRanvLzc1qxZ027mzJltSkpKzlfjSERAQ+lEJEFWVtbpeXl5q9QoEpGWqlWrVt6hQ4c1AwYMKM3Ozv59uvMjIk2DGkYiUoG7d2nTps26dOdDRKShtW/ffq27b5LufIhI06CGkYgkMjNLdx5ERBpcdGVcv4VEBFBlICIiIiIiooaRiLQMRx999IALL7wwD2DcuHGd+vTps0O68yTSnH377bdtcnJydiorK0t3VkREGoWm6xaRGuX1zRtcXFTcYHVFbl5uWdGcoqmpbDN06NCtv/nmm/bz5s2b2r59+5QniRg1alTeHXfcsUnbtm0doFevXuv23Xff5X/4wx+KN91003UQGleHHXbYVu3atSsH6NSp0/pddtll5e9+97u5BQUFq1M9Zl31zssbvKC44T7/Xrm5ZfOLNv7zP/roowe8/PLL3du0aeMAeXl5pcOHD1963XXXze3Ro8f6+O1HjRqVd+utt+a+9dZb3+y///6rYsvvuOOOHhdffPGAtm3blrdq1Yp+/fqV/P73v5+zdOnSrEsuuWRTCLOJlZaWWuy8AKxevfrTjfkMktGrT+7ghfPnNth56Nl7k7IF84prPQ99+/bdftGiRa1btWrlOTk55QUFBcseeuih2V26dCmvbdtk9n333XfPPOKII1YAbLnllqWN8dlC+E5NnTq1Q1ZWlmdlZfnWW2+95p577pk9dOjQNRu73xNOOGHRqFGjFtZXXkWk5VLDSERqVFxUnD1x3rgG2/+efQ5JqR6aNm1am8mTJ3fs2LHj+qeeeqrrGWecsaQuxz344IOXvPTSSzNKSkrs888/bzt69Oi8XXfdddtPPvnk61jjqFevXuvmzZv3WXl5OTNmzGh955139ho+fPg2zz777LeHH374irocN1ULiouzh736nwbb/4SD9663z//cc8+de8cddxStXr3aPvnkk/a//e1v++2+++7bTJ48+evOnTuXA5SXl/Pss8/26NKly/qHH364R3zDCGDHHXdcOXny5Gnr16/nxhtv7H3GGWdsPnv27M/OPffcTyE0WH/5y19uNm/evM/qo/zJWjh/bvbmpzzdYPv//vETkj4PTz/99LdHHHHEitmzZ2cfeOCBW40ePTr3zjvvnNNgmWskY8aMmT1q1KiFZWVlXHrppXmnnnrqZt98881X6c6XiGQODaUTkWblb3/7W4/BgwevOvbYYxc+/vjjPTZ2f23btvUhQ4asHTdu3PfdunUru/766/skpmnVqhUDBw5cd9tttxUdf/zxC6+66qp+G3vc5iqZzz8nJ8cLCgpWv/HGG98tXbo066677tqQbvz48R0XLlzYesyYMbNfeeWV7mvXrq1ypo+srCwuuOCChWvXrm319ddft22o8jRn+fn5Zfvtt9/yzz//vD1UPYS0b9++27/44oudIFypGzly5OZHHnnkgA4dOuy0xRZbbPfuu+/mABxxxBGbFRcXtznhhBO2zMnJ2Wn06NF9pk2b1sbMdlm3LkxSOXTo0K0vvPDCvJ122mmbnJycnfbff/8t5s6dm3XYYYdt1rFjx50GDRq07bRp09rEjv3pp5+223PPPbfs0qXLjgMGDBj0wAMPdEumXNnZ2ZxyyimLp0+f3i62bP369Vx55ZWb9O/ff1DXrl13HDly5Obz5s3LAli9erUdfvjhm3Xt2nXHTp067Tho0KBtCwsLsy+44IK+kydP7njFFVfk5+Tk7HTqqafmb+RHLiItnBpGItKsPPvssz2OO+64Rb/4xS8Wv/fee50LCwvr5cp3dnY2I0aMWPrhhx92rCndMcccs+Srr77KWb58eUbWn6l8/t26dSvfe++9l7///vudYsuiq0RLY1eann766S5Vbbtu3Tpuv/32njk5OeXbbbddSf2XpPmbPn1667fffrvzZpttlvTn89Zbb3U94YQTlixbtuzTgw46aOkFF1yQD/Diiy/OyM3NLX366ae/Xb169ad//OMf51W1/Ysvvth97NixMwoLCz+bNWtW2913333bM844Y+GSJUs+3XLLLddcddVVeQDLly9vNWLEiK2OP/74xQsXLvzvE088Mf2yyy7Lnzx5cruq9htv7dq19sgjj/QYPHjwhquJN9xwQ+9XX32164QJE6YVFxdP7dq16/ozzzwzH+Duu+/usWLFiqzCwsLPlixZ8t977713VocOHcrvvPPOObvsssvKMWPGzF69evWnjz322OxkPycRyUwZGdhFpHkaP358x6Kioja/+MUvluyzzz6r+/fvX/LQQw91r6/95+XlrVu2bFmNDa3+/fuvc3cWLVqUVV/HbS7q8vnn5uauW7JkSRbAihUrWr322mvdTzzxxMVt27b1kSNHLkm86jR16tSOnTp12rF3796Dn3/++e5PPPHEd4n3KGW6k046aYvois8OPXr0KPvzn/9clOy2u+yyy8rjjz9+WXZ2NmecccaiadOm5aRy7BNPPHHhdtttV9KjR4/1+++//7L8/PySI444YkXr1q059thjl3zxxRc5AM8880yXvn37lvzmN79Z1Lp1a/baa681I0aMWPrkk09We9Xoqquu6t+pU6cdO3fuvNMjjzzS6+qrr95QrocffrjXddddN2fgwIHr2rdv72PGjCl6/fXXu61bt47WrVv7kiVLsr/66qu22dnZ7LPPPqu7d+++0fdciUjmUcNIRJqNhx9+uMfee++9PDc3twzg6KOPXvzUU0/1rGmbe++9t3tOTs5OOTk5O+27775b1pR2zpw5rbt06VLjFFyzZ89ubWZk4o/1unz+RUVFbbp167YeYOzYsV2zsrL82GOPXQZwyimnLHr33Xe7FBUVbWiMDh48eOWKFSv+u2TJkqlTp079JjYRgPzoySef/G7VqlWfjhs3btr06dPbzZ2b/KQQvXr12vDw5o4dO5aXlJRYbKhcMvr06bPh/0f79u3L4/eXk5NTvnr16lYAs2bNavPZZ5916NSp046x14svvth97ty5ravb9/XXX1+4YsWK/65Zs2bKc889990pp5wy8KOPPmoPUFxc3Obkk0/eIravQYMGbZeVlcUPP/zQ+txzz128//77LzvppJM279279w7nnHNOv5KSEj2MTURSpskXRKRZWLlypb366qvd1q9fbz179hwMUFpaaitWrMj64IMP2le33bnnnrv43HPPXVzb/tevX8/48eO77rvvvstrSvfCCy90+8lPfrI6NplApqjL579s2bJW77//fqeLL764GGDs2LE9Vq9e3apfv347ALg7ZWVl9uCDD3a/+uqr5zdeaVqGgw8+eOXxxx+/6KKLLur35ptvTu/UqdP6tWvXbujwLCsrY/HixWmJ8/3791+36667rpg4ceK3qW6blZXFz372s5X5+fklr776aufddtttTZ8+fdbdf//9M4YPH76qqm1uvvnm4ptvvrl42rRpbUaOHLnlPffcs/biiy9eaGYpz1opIplLV4xEpFl44oknurVq1YqpU6d+OWXKlC+nTJny5RdffPHFLrvssvKhhx6q8yQM69atY8qUKe0OO+ywzRcuXNj6yiuvrHRvRWxWuksuuST3mWee6Xndddc1+xnAUpXK579mzRp77733ckaMGLFF586d159//vmLZsyY0frDDz/s/Mwzz3wX2/7TTz/98txzz5379NNPb/QkGpnqiiuumPf+++93/uCDD9oPGjSopLS01J5++ukuJSUl9rvf/S533bp1Scf5nj17rvvuu+/qZaKL4447bunMmTPb3X333d1LSkqspKTE3nnnnZwpU6bUeo8RwJtvvtlh+vTp7QYNGrQG4PTTT58/evTofv/73//aABQVFWWPHTu2K8Arr7zS6eOPP25fVlZG165d12dnZ3urVq1iU/GXff/995q8Q0SSoitGIlKj3LzcslSn1E51/8mkGzt2bI/jjjtu4ZZbblkav/ycc86Zf/nll+fvtddeNV7pSfTqq692y8nJ6eru9O7de90+++yz/JNPPvlqwIABG4YGLViwoHVOTs5O7k6nTp3W77zzzitfe+21aT/96U+r7LVuCL1yc8tSnVI71f0nky6Zz//ee+/d5MEHH+zj7uTl5ZUeeOCBS//whz/M7dy5c/mNN97Ye5tttll91FFHVThPv/3tb+fff//9fT755JOkfjCnS8/em5SlMqV2XfZfl+3y8vLKjjrqqEXXXHNN3vjx46ffdNNNsy+44IJNzzvvPDv//PPn9unTp7T2vQSXXXbZ3Msuu6z/tdde2+/iiy8uPvnkk+s0FT6EiTdef/31//3mN7/pP3r06P7ubttss83qW265pbC6ba644or80aNH94fQSLv88svn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\n",
      "text/plain": [
       "<Figure size 1008x144 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running Sims for  ibmq_casablanca\n",
      "Number of programs evaluated for  ibmq_casablanca  : 10\n",
      "-------------- XYXY Statistics -----------\n",
      "GMean All DD:  0.907279800432074  ADAPT  0.9888965305501836  Runtime Best 1.0900846216043611\n",
      "Max improvement All DD  1.2093023241904233  ADAPT  1.0  Runtime Best  1.6525148685678184\n",
      "-------------- IBMQ-DD Statistics -----------\n",
      "GMean All DD:  0.012660254500547207  ADAPT  1.0627782593166988  Runtime Best 1.1140500665271136\n",
      "Max improvement All DD  1.5798164992383292  ADAPT  1.5800096424872538  Runtime Best  1.580878787819418\n",
      "----------- Relative Statistics ----------\n",
      "XYXY: ADAPT to No-DD : Gmean :  0.9888965305501836  Max:  1.0\n",
      "XYXY: ADAPT to All-DD : Gmean :  1.0899576184538013  Max:  1.927208767419835\n",
      "IBMQ-DD: ADAPT to No-DD : Gmean :  1.0627782593166988  Max:  1.5800096424872538\n",
      "IBMQ-DD: ADAPT to All-DD : Gmean :  83.94604225932127  Max:  430733817.0363022\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzsAAADQCAYAAAAgRH/zAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABM7UlEQVR4nO3dd3gc1fX/8feRXOXeMG7CYDoGA6YHsCEJBNMh9EBoCZgvkEAgJOAkQCgpP3oLhBZ6CQkBAyEBYrrBGDCYYrptcMPdxlXW+f1x75rxarVaSbtaaf15Pc8+0s7Mzrk7Oztn7507d8zdERERERERKTVlxS6AiIiIiIhIIaiyIyIiIiIiJUmVHRERERERKUmq7IiIiIiISElSZUdEREREREpSq2IXQESKY/z48eu0atXqVmAwavgQkdJVDUysqqo6eejQobOKXRgRaVqq7IispVq1anXruuuuu1mvXr3mlZWVaQx6ESlJ1dXV9vXXX28+Y8aMW4EDil0eEWlaas0VWXsN7tWr10JVdESklJWVlXmvXr0WEM5ii8haRpUdkbVXmSo6IrI2iMc6/eYRWQvpiy8iIiIiIiVJlR0RaXEOPfTQgWeeeWZfgNGjR3fq3bv3VsUuk0hL9vHHH7epqKjYpqqqqthFERHJKw1QICKr9e3Xd8j0adMLdlzo07dP1bSvpk2oz2t22GGHTT788MP2M2fOnNC+fft6d7s7++yz+1577bXrtm3b1gF69eq1cvfdd1/4+9//fvp66623EkKF6YADDti4Xbt21QCdOnVaNXTo0MXnnXfejGHDhi2pb8yGWKdv3yFfTy/ctu/Vp0/VrGmN3/aHHnrowMcee6x7mzZtHKBv374r9tprr/kXX3zxjB49eqxKvv7ss8/ue9VVV/V59tlnP9xzzz2/SU2/9tpre5x11lkD27ZtW11WVkb//v2X/+53v/tq/vz55b/4xS/Wg3BR+YoVKyz1mQAsWbLkrcZsg1z06t1nyOxZMwr2OfRcZ92qr2dOz+lz6Nev35Zz5sxpXVZW5hUVFdXDhg1bcPvtt0/p0qVLdd2vrnvdN9xwwxcHHXTQIoCNNtpoRVNsXwj71YQJEzqUl5d7eXm5b7LJJktvvPHGKTvssMPSxq73yCOPnHP22WfPzldZRaTlU2VHRFabPm16q1dmji7Y+nfpvV+9jjmTJk1qM378+I4dO3Zcdf/993c98cQT5zUk7r777jvvX//61+fLly+3d999t+2oUaP6br/99puNGzfug1SFp1evXitnzpz5TnV1NZ9//nnr6667rtdee+216UMPPfTxgQceuKghcevj6+nTWw1/4qWCrX/MvrvmbduPHDlyxrXXXjttyZIlNm7cuPa//OUv+++0006bjh8//oPOnTtXA1RXV/PQQw/16NKly6o77rijR7KyA7D11lsvHj9+/KRVq1bxhz/8YZ0TTzxxgylTprwzcuTItyBUQE866aT1Z86c+U4+3n+uZs+a0WqDYx8o2Po/u/vIen0ODzzwwMcHHXTQoilTprT6/ve/v/GoUaP6XHfddV8VqnxN5fLLL59y9tlnz66qquKcc87pe9xxx63/4Ycfvl/scolI6VE3NhFptv7617/2GDJkyDeHHXbY7LvvvrtHY9fXtm1b32677ZaNHj36s27dulVdeumlvdOXKSsrY9CgQSuvvvrqaUccccTsCy64oH9j47ZEuWz7iooKHzZs2JJ///vfn8yfP7/8+uuvX73c008/3XH27NmtL7/88imPP/5492XLllmmdZSXl3PGGWfMXrZsWdkHH3zQtlDvp6WrrKys2mOPPRa+++677SFz981+/fpt+eijj3aCcFZtxIgRGxx88MEDO3TosM2GG264xQsvvFABcNBBB60/ffr0NkceeeRGFRUV24waNar3pEmT2pjZ0JUrVwLhLMmZZ57Zd5ttttm0oqJimz333HPDGTNmlB9wwAHrd+zYcZvBgwdvNmnSpDap2G+99Va7XXbZZaMuXbpsPXDgwMG33nprt1zeV6tWrTj22GPnfvrpp+1S01atWsX555+/7oABAwZ37dp16xEjRmwwc+bMcoAlS5bYgQceuH7Xrl237tSp09aDBw/ebOrUqa3OOOOMfuPHj+/461//urKiomKb4447rrKRm1xESoQqOyLSbD300EM9Dj/88Dk//vGP57744oudp06dmpez0a1atWKfffaZP3bs2I7ZlvvhD3847/33369YuHDhWnesrM+279atW/Wuu+668OWXX+6UmhbP5sxPnRF64IEHumR67cqVK7nmmmt6VlRUVG+xxRbL8/9OSsOnn37a+rnnnuu8/vrr57yNnn322a5HHnnkvAULFry19957zz/jjDMqAR599NHP+/Tps+KBBx74eMmSJW9dcsklMzO9/tFHH+1+zz33fD516tR3Jk+e3HannXba7MQTT5w9b968tzbaaKOlF1xwQV+AhQsXlu2zzz4bH3HEEXNnz5799r333vvpueeeWzl+/Ph2mdabtGzZMrvzzjt7DBkyZPWZv8suu2ydJ554ouuYMWMmTZ8+fULXrl1XnXzyyZUAN9xwQ49FixaVT5069Z158+a9fdNNN03u0KFD9XXXXffV0KFDF19++eVTlixZ8tZdd901JdftJCKlba1L4CLSMjz99NMdp02b1ubHP/7xvN12223JgAEDlt9+++3d87X+vn37rlywYEHWytOAAQNWujtz5swpz1fclqAh275Pnz4r582bVw6waNGisieffLL7UUcdNbdt27Y+YsSIeelnhyZMmNCxU6dOW6+zzjpD/v73v3e/9957P0m/5kfg6KOP3jCemdmqR48eVX/+85+n5fraoUOHLj7iiCMWtGrVihNPPHHOpEmTKuoT+6ijjpq9xRZbLO/Ro8eqPffcc0FlZeXygw46aFHr1q057LDD5k2cOLEC4MEHH+zSr1+/5T/72c/mtG7dmu985ztL99lnn/n33XdfrWd3LrjgggGdOnXaunPnztvceeedvX7zm9+sfl933HFHr4svvvirQYMGrWzfvr1ffvnl05566qluK1eupHXr1j5v3rxW77//fttWrVqx2267LenevXujr2ESkdKlyo6INEt33HFHj1133XVhnz59qgAOPfTQuffff3/PbK+56aabuldUVGxTUVGxze67775RtmW/+uqr1l26dMk69NSUKVNamxlr24/whmz7adOmtenWrdsqgHvuuadreXm5H3bYYQsAjj322DkvvPBCl2nTpq2uXA4ZMmTxokWL3p43b96ECRMmfJi6UF7WdN99933yzTffvDV69OhJn376absZM3IfPKFXr14rU/937Nixevny5ZbqppaL3r17r/5+tG/fvjq5voqKiuolS5aUAUyePLnNO++806FTp05bpx6PPvpo9xkzZrSubd2XXnrp1EWLFr29dOnSNx9++OFPjj322EGvvfZae4Dp06e3OeaYYzZMrWvw4MFblJeX8+WXX7YeOXLk3D333HPB0UcfvcE666yz1amnntp/+fLlGbtIioiABigQkWZo8eLF9sQTT3RbtWqV9ezZcwjAihUrbNGiReWvvvpq+9peN3LkyLkjR46cW9f6V61axdNPP9119913X5htuUceeaTb5ptvviR10f3aoCHbfsGCBWUvv/xyp7POOms6wD333NNjyZIlZf37998KwN2pqqqy2267rftvfvObWU33bkrHvvvuu/iII46Y8/Of/7z/M88882mnTp1WLVu2bHWDZVVVFXPnzi1KTh8wYMDK7bffftErr7zycX1fW15ezg9+8IPFlZWVy5944onOO+6449LevXuvvOWWWz7fa6+9vsn0miuuuGL6FVdcMX3SpEltRowYsdGNN9647KyzzpptZrpJsojUoDM7ItLs3Hvvvd3KysqYMGHCe2+++eZ7b7755nsTJ06cOHTo0MW33357gwcqWLlyJW+++Wa7Aw44YIPZs2e3Pv/882tcq5Aaje0Xv/hFnwcffLDnxRdf3OJHvqqP+mz7pUuX2osvvlixzz77bNi5c+dVp59++pzPP/+89dixYzs/+OCDn6Re/9Zbb703cuTIGQ888ECjB5lYm/3617+e+fLLL3d+9dVX2w8ePHj5ihUr7IEHHuiyfPlyO++88/qsXLky55zes2fPlZ988kleBoQ4/PDD53/xxRftbrjhhu7Lly+35cuX2/PPP1/x5ptv1nnNDsAzzzzT4dNPP203ePDgpQAnnHDCrFGjRvX/6KOP2gBMmzat1T333NMV4PHHH+/0+uuvt6+qqqJr166rWrVq5WVlZalh5as+++wzDXIhImtQZUdEmp177rmnx+GHHz57o402WlFZWVmVepx66qmz/vnPf/aoqqqqV7eVJ554oltFRcU2nTt33ubggw/esFu3blXjxo17f+DAgau75Xz99detKyoqtunQocM2O+6442bvvfde+yeffHLSIYcckvXsT6nJZdvfdNNN63bo0GGbHj16bH3CCSesP2TIkG9ee+21Dzt37lz917/+tcemm2665JBDDlmYfP0vf/nLWZMmTWo/bty4nH4AS019+/atOuSQQ+ZceOGFfXv06LHqj3/845QzzjhjvT59+mzVoUOH6t69e6/IdV3nnnvujCuuuKJPp06dtv7tb39bY1TC+ujWrVv1U0899dHDDz/cfd11192qd+/eQ84777z+tY3AB5AaNa2iomKbE088cf1f/epXXx1++OELAUaNGjVrxIgR8/faa6+N4/dx07Fjx3YAmDZtWuvDDz98UKdOnbbZfPPNB++8886LTjvttDkAP//5z2eOHj26W+fOnbc+/vjjBzTmPYlI6TB3nfUVWRtNmDDhiyFDhqxx873meFPRtUVzvKno2qg53VRU8mvChAk9hwwZMrDY5RCRpqVrdkRkNVVEikcVkeZBFRERkdKibmwiIiIiIlKSVNkREREREZGSpMqOiIiIiIiUJFV2RNZe1dXV1boZn4iUvHisW2vulyUi31JlR2TtNfHrr7/uogqPiJSy6upq+/rrr7sAE4tdFhFpehqNTWQtVVVVdfKMGTNunTFjxmDU8CEipasamFhVVXVysQsiIk1P99kREREREZGSpNZcEREREREpSarsiIiIiIhISVJlR0RERERESlKzHqCgZ8+ePnDgwGIXQ0RkrTZ+/PjZ7t6r2OVojpSnRESKL1ueyqmyY2ZvA3cC97v7zPwVLbuBAwfyxhtvNFU4ERHJwMwmF7sMzZXylIhI8WXLU7l2Y7sY2B34zMyeMrOjzaxdXkonIiIiIiJSADlVdtz9H+5+CDAA+BdwGjDDzG43sz0LWUAREREREZGGqNcABe4+F/gb8BdgCnAocIuZfWRm3ytA+UREWpQ+/Soxs4yPPv0qi108kbVW5cDav5ut27fPOL1Vm3b6Pou0cLles2PAXsCxwH7Aq8AfgH+6+1IzOxS4B1i3UAUVEWkJZkybygbHPpBx3md3H9nEpRGRlKmTp/LKzNEZ5+3Sez+GP/FSjelj9t1V32eRFi7X0dimA7OBu4Bfuvu05Ex3f8TMTs934URERERERBoq18rOfu6edbgZd98jD+URERERERHJi1yv2flPpolmNiuPZREREREREcmbXCs7rdMnmFlroDy/xREREREREcmPrN3YzOxFwIF2ZvZC2uz+wCuFKpiIiIiIiEhj1HXNzq2AAdsDtyWmOzATeK5A5RIREREREWmUrJUdd/8bgJmNdfcPm6ZIIiIiIiIijVdrZcfMjnX3u+PTXcxsl0zLufvtBSmZiIiIiIhII2Q7s3MUkKrsHFvLMg6osiMizU6ffpXMmDa1xvR1+w5g+ldTilAiERERaWq1VnbcfUTif91DR0RalBnTpma887nuei4iIrL2yNaNLadhqd29On/FERERERERyY9s3diqCN3UamNxvu61IyIiIiIizU62ys76TVYKERERERGRPMt2zc7k9Gmxa1tvd59e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\n",
      "text/plain": [
       "<Figure size 1008x144 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running Sims for  ibmq_guadalupe\n",
      "Number of programs evaluated for  ibmq_guadalupe  : 10\n",
      "-------------- XYXY Statistics -----------\n",
      "GMean All DD:  1.0397512398051343  ADAPT  1.2635952677953566  Runtime Best 1.657752876613621\n",
      "Max improvement All DD  3.733332957156703  ADAPT  3.102678988879425  Runtime Best  4.4613328569652655\n",
      "-------------- IBMQ-DD Statistics -----------\n",
      "GMean All DD:  0.8434944493681381  ADAPT  0.9032829009739234  Runtime Best 1.2037043675567174\n",
      "Max improvement All DD  1.1620062105204176  ADAPT  1.045716821050967  Runtime Best  2.158643255420154\n",
      "----------- Relative Statistics ----------\n",
      "XYXY: ADAPT to No-DD : Gmean :  1.2635952677953566  Max:  3.102678988879425\n",
      "XYXY: ADAPT to All-DD : Gmean :  1.2152861371265824  Max:  4.6529140907441695\n",
      "IBMQ-DD: ADAPT to No-DD : Gmean :  0.9032829009739234  Max:  1.045716821050967\n",
      "IBMQ-DD: ADAPT to All-DD : Gmean :  1.070881855417748  Max:  2.3068232594359372\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzsAAADTCAYAAACm0A1dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABWbUlEQVR4nO3dd5xU1fnH8c+zS5deZYEFe0NRwYYFNIqx996IMbZookaTqCRRY8svsbeosfcauzFRo7GhAgYsERVpSpHe28Lz++OcgbuzO7uzZXa2fN+v17x257Zz7p0755lz7rnnmrsjIiIiIiLS2BTkOwMiIiIiIiK5oMqOiIiIiIg0SqrsiIiIiIhIo6TKjoiIiIiINErN8p0BEcmP0aNHt2jWrNndwG5AYb7zIyKSI6uBd0tKSn42cODAlfnOjIjULVV2RJqogoKCs9q3b79r37595xcUFGhYRhFplNasWWOTJ0/ebf78+WcBN+U7PyJSt9SNTaSJKiws/ElRUdESVXREpDErKCjwoqKixYWFhcPznRcRqXuq7Ig0Ue7eoUWLFqvynQ8RkVxr0aLFKnfvkO98iEjdU2VHpOkyM8t3HkREci6WdfrNI9IE6YsvIiIiIiKNkio7ItLgHHHEEf1+8YtfFAG89NJL7Xr06LFNvvMk0pB9/fXXLdq0abNdSUlJvrMiIlKrNBqbiKxV1KtowPRp03NWLvQs6lky7ftpY6uyzo477rjZl19+2XrmzJljW7duXeXBFC644IKim2++ef2WLVs6QLdu3VbtscceC//4xz9O79u37yoIFaaDDz5401atWq0BaNeu3eqBAwcu/s1vfjNjyJAhS6uaZnV0LyoaMGt67o59t549S36YVvNjf8QRR/R74YUXOrdo0cIBioqKVg4bNmz+FVdcMaNLly6rk+tfcMEFRTfccEPPN95448u99tprSWr6zTff3OX888/v17JlyzUFBQX07t17xR/+8Ifv58+fX/irX/2qL4QRtFauXGmpzwRg6dKln9TkGGSjW4+eA2b/MCNnn0PX7uuXzJo5PavPoVevXlvPmTOneUFBgbdp02bNkCFDFtx7771TOnTosKbytSvf9m233Tbp0EMPXQSwySabrKyL4wvhvBo7dux6hYWFXlhY6Jttttmy22+/fcqOO+64rKbbPfbYY+dccMEFs2srryLS8KmyIyJrTZ82vdn7M1/K2fYH9ziwSmXO+PHjW4wePbpt27ZtVz/22GMdTz311HnVSfeAAw6Y9/zzz09csWKFffrppy1HjBhRtMMOO2zx8ccf/y9V4enWrduqmTNnjluzZg0TJ05sfsstt3QbNmzY5k8++eTXhxxyyKLqpFsVs6ZPbzb05Xdztv23Dtit1o79WWedNePmm2+etnTpUvv4449b//rXv+698847bz569Oj/tW/ffg3AmjVrePLJJ7t06NBh9X333dclWdkB2HbbbRePHj16/OrVq7n22mu7n3rqqRtOmTJl3FlnnfUJhAroT3/60w1mzpw5rjb2P1uzf5jRbMOTHs/Z9r996NgqfQ6PP/7414ceeuiiKVOmNNtnn302HTFiRM9bbrnl+1zlr65cc801Uy644ILZJSUlXHjhhUUnn3zyBl9++eUX+c6XiDQ+6sYmIvXW3Xff3WXAgAFLjjrqqNkPPfRQl5pur2XLlj5o0KDlL7300redOnUqueqqq3qkL1NQUMBGG2206sYbb5x2zDHHzL700kt71zTdhiibY9+mTRsfMmTI0n/84x/fzJ8/v/DWW29du9xrr73Wdvbs2c2vueaaKS+++GLn5cuXlzsaRmFhIeeee+7s5cuXF/zvf/9rmav9aeiKi4tL9txzz4Wffvppayi/+2avXr22fu6559pBuKq2//77b3jYYYf1W2+99bbbeOONt/rPf/7TBuDQQw/dYPr06S2OPfbYTdq0abPdiBEjeowfP76FmQ1ctSoM0Ljjjjtu9otf/KJou+2227xNmzbb7bXXXhvPmDGj8OCDD96gbdu22/Xv33+L8ePHt0il/cknn7QaPHjwJh06dNi2X79+/f/2t791yma/mjVrxkknnTR3woQJrVLTVq9ezSWXXLJ+nz59+nfs2HHb/ffff8OZM2cWAixdutQOOeSQDTp27Lhtu3bttu3fv/8WU6dObXbuuef2Gj16dNuLL764uE2bNtudfPLJxTU85CLSSKiyIyL11pNPPtnl6KOPnnPKKafMfeedd9pPnTq1Vq5GN2vWjP3222/+yJEj21a03JFHHjnviy++aLNw4cImV1ZW5dh36tRpzW677bbwvffea5eaFq/mzE9dEXr88cfLHfZ31apV3HTTTV3btGmzZquttlpR+3vSOEyYMKH5m2++2X6DDTbI+hi98cYbHY899th5CxYs+GTfffedf+655xYDPPfccxN79uy58vHHH/966dKln1x55ZUzy1v/ueee6/zwww9PnDp16rjJkye33Hnnnbc49dRTZ8+bN++TTTbZZNmll15aBLBw4cKC/fbbb9Njjjlm7uzZs//7yCOPTLjooouKR48e3aq87SYtX77c7r///i4DBgxYe+Xv6quv7v7yyy93fOutt8ZPnz59bMeOHVefdtppxQC33XZbl0WLFhVOnTp13Lx58/57xx13TF5vvfXW3HLLLd8PHDhw8TXXXDNl6dKlnzz44INTsj1OItK4NbkALiINw2uvvdZ22rRpLU455ZR5u++++9I+ffqsuPfeezvX1vaLiopWLViwoMLKU58+fVa5O3PmzCmsrXQbguoc+549e66aN29eIcCiRYsKXnnllc7HHXfc3JYtW/r+++8/L/3q0NixY9u2a9du2+7duw94+umnOz/yyCPfpN/zI3D88cdvHK/MbNOlS5eSP//5z9OyXXfgwIGLjznmmAXNmjXj1FNPnTN+/Pg2VUn7uOOOm73VVlut6NKly+q99tprQXFx8YpDDz10UfPmzTnqqKPmffbZZ20AnnjiiQ69evVa8ctf/nJO8+bN2XXXXZftt99+8x999NGMV3cuvfTSPu3atdu2ffv2291///3dfve7363dr/vuu6/bFVdc8f1GG220qnXr1n7NNddMe/XVVzutWrWK5s2b+7x585p98cUXLZs1a8buu+++tHPnzjW+h0lEGi9VdkSkXrrvvvu67Lbbbgt79uxZAnDEEUfMfeyxx7pWtM4dd9zRuU2bNtu1adNmuz322GOTipb9/vvvm3fo0KHCoaemTJnS3Mxoaj/Cq3Psp02b1qJTp06rAR5++OGOhYWFftRRRy0AOOmkk+b85z//6TBt2rS1lcsBAwYsXrRo0X/nzZs3duzYsV+mbpSX0h599NFvlixZ8slLL700fsKECa1mzMh+8IRu3bqtfWhw27Zt16xYscJS3dSy0aNHj7Xfj9atW69Jbq9NmzZrli5dWgAwefLkFuPGjVuvXbt226Zezz33XOcZM2Y0z7Ttq666auqiRYv+u2zZsjFPPfXUNyeddNJGH374YWuA6dOntzjhhBM2Tm2rf//+WxUWFvLdd981P+uss+butddeC44//vgNu3fvvs2ZZ57Ze8WKFXpgmIhkpAEKRKTeWbx4sb388sudVq9ebV27dh0AsHLlSlu0aFHhBx980DrTemedddbcs846a25l21+9ejWvvfZaxz322GNhRcs988wznbbccsulqZvum4LqHPsFCxYUvPfee+3OP//86QAPP/xwl6VLlxb07t17GwB3p6SkxO65557Ov/vd736ou71pPA444IDFxxxzzJzzzjuv9+uvvz6hXbt2q5cvX762wbKkpIS5c+fmJab36dNn1Q477LDo/fff/7qq6xYWFvLjH/94cXFx8YqXX365/U477bSsR48eq+66666Jw4YNW1LeOtddd9306667bvr48eNb7L///pvcfvvty88///zZZlbl0RpFpPHTlR0RqXceeeSRTgUFBYwdO/bzMWPGfD5mzJjPP/vss88GDhy4+N577632QAWrVq1izJgxrQ4++OANZ8+e3fySSy4pc69CajS2X/3qVz2feOKJrldccUWDH/mqKqpy7JctW2bvvPNOm/3222/j9u3brz7nnHPmTJw4sfnIkSPbP/HEE9+k1v/kk08+P+uss2Y8/vjjNR5koim7+OKLZ7733nvtP/jgg9b9+/dfsXLlSnv88cc7rFixwn7zm9/0XLVqVdYxvWvXrqu++eabWhkQ4uijj54/adKkVrfddlvnFStW2IoVK+ztt99uM2bMmErv2QF4/fXX15swYUKr/v37LwP4yU9+8sOIESN6f/XVVy0Apk2b1uzhhx/uCPDiiy+2++ijj1qXlJTQsWPH1c2aNfOCgoLUsPIl3377rQa5EJFSdGVHRNbqWdSzpKrDQ1d1+9ks9/DDD3c5+uijZ2+yySYrk9PPPPPMH377298W77rrrhVekUn38ssvd2rTpk1Hd6d79+6rdt9994Uff/zxF/369VvbLWfWrFnN27Rps527065du9Xbb7/94ldeeWX8j370o3Jbl2tbt549S6o6PHRVt5/Nctkc+zvuuGP9e+65p4e7U1RUtHKfffaZ/8c//nFG+/bt11x77bXdN99886WHH354qc/o17/+9Q933XVXj48//jirH8D50rX7+iVVHR66qtuv7rpFRUUlhx9++JzLLrus6LXXXpvwpz/9acq5557b9+yzz7ZzzjlnRo8ePVZWvpXgoosumnHRRRf1ufzyy3uff/7500844YRqDesOYYCKV1999atf/vKXfUaMGNHH3W3zzTdfev3110/NtM7FF19cPGLEiD4QKl6//e1vvz/66KMXAowYMeIHd7dhw4ZtOmvWrOadO3dedcghh8w78cQT50+bNq35ueee23fmzJnN27Rps+aggw6ae/bZZ88BOO+882aedtppGzz44IPdDj/88Dn3339/xvRFpOkwd131FWmKxo4dO2nAgAF6+J6INAljx47tOmDAgH75zoeI1C11YxMRERERkUZJlR0REREREWmUVNkREREREZFGSZUdERERERFplFTZEWm61qxZs0YP4xORRi+WdU3meVkiso4qOyJN12ezZs3qoAqPiDRma9assVmzZnUAPst3XkSk7uk5OyJNVElJyWkzZsz424wZM/qjhg8RabzWAJ+VlJSclu+MiEjd03N2RERERESkUVJrroiIiIiINEqq7IiIiIiISKNUr+/Z6dq1q/fr1y/f2RARadJGjx4929275Tsf9ZHilIhI/lUUp+p1Zadfv36MGjUq39kQEWnSzGxyvvNQXylOiYjkX0VxKqtubGb2XzM7z8x61F62REREREREcifbe3auAPYAvjWzV83seDNrlcN8iYiIiIiI1EhWlR13f9bdDwf6AM8DZwMzzOxeM9srlxkUERERERGpjiqNxubuc4EHgL8CU4AjgLvM7Csz2zsH+RORBqxnr2LMrNxXz17F+c6eiDQQKktEpLqyGqDAzAwYBpwEHAh8AFwL/N3dl5nZEcDDwPq5yqiINDwzpk1lw5MeL3fetw8dW8e5EZGGSmWJiFRXtqOxTQdmAw8Cv3b3acmZ7v6MmZ1T25kTERERERGprmy7sR3o7v3d/f/SKzop7r5nLeZLRKRGMnV7UZcXKY+ZtTSze8xsspktiqOQ7pfvfImISM1ke2Xnn0Dn9Ilm9oO7d6/dLImI1Fymbi/q8iIZNAOmAkMI96TuDzxpZlu7+6R8ZkxERKov28pO8/QJZtYcKKzd7IiIiNQ9d18CXJaY9JKZTQQGApPykScREam5Cis7ZvYO4EArM/tP2uzewPtVTdDMNgE+BZ529xOrur6IiEiuxYdobwp8Xs6804HTAYqL1S1SRKQ+q+zKzt8AA3YA7klMd2Am8GY10rwN+Lga64mIiORc7LnwCPCAu3+ZPt/d7wLuAhg0aJDXcfZERKQKKqzsuPsDAGY2srwCv6rM7FhgPuGK0MY13Z6IiEhtMrMC4CFg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\n",
      "text/plain": [
       "<Figure size 1008x144 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "all_machines = ['ibmq_toronto', 'ibmq_casablanca','ibmq_guadalupe']\n",
    "for machine in all_machines:\n",
    "    print('Running Sims for ', machine)\n",
    "    relative_xyxy_fidelity_data, relative_ibmq_fidelity_data, workload_labels = final_evaluation_data_generation_wrapper(machine)\n",
    "    ydata = np.array([relative_xyxy_fidelity_data,relative_ibmq_fidelity_data])\n",
    "    legends = ['All-DD', 'ADAPT', 'Exhaustive Search','Runtime Best']\n",
    "    font_size = 12\n",
    "    xlabel = ['(a) Benchmarks on '+ibmq_names[machine] + '\\n(Using XY-4)', '(b) Benchmarks on '+ibmq_names[machine] + '\\n(Using IBMQ-DD)']\n",
    "    plot_name = './final_plots_for_paper/'+machine+'_all_eval_data.pdf'\n",
    "\n",
    "    relative_xyxy_fidelity_data = np.delete(relative_xyxy_fidelity_data,(2),axis=0)\n",
    "    relative_ibmq_fidelity_data = np.delete(relative_ibmq_fidelity_data,(2),axis=0)\n",
    "\n",
    "    ydata = np.array([relative_xyxy_fidelity_data,relative_ibmq_fidelity_data])\n",
    "    legends = ['All-DD', 'ADAPT', 'Runtime Best']\n",
    "    font_size = 12\n",
    "    plot_name = './final_plots_for_paper/'+machine+'_all_eval_data.pdf'\n",
    "    plot_data_nbyn(ydata,plot_type='bar',xticks_labels=[workload_labels,workload_labels],xticks_rotation=25,\n",
    "                   legends=legends,legend_cols=4,ylabel =['Relative Fidelity',None],xlabel=xlabel,\n",
    "                   plot_baseline=[1,1],figure_legend_using_subplot=1,#ylim=[[0,2],[0,2]],\n",
    "                   yticks_fontsize=font_size,xticks_fontsize=font_size,font_family='sans-serif',\n",
    "                   ylabel_size=font_size,xlabel_size=font_size,plot_title_fontsize=font_size,legend_size=font_size,\n",
    "                   figure_dim=[14,2],adjust_size=0.78,plot_name=plot_name,\n",
    "                   palette_style='ygb')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "extended-acceptance",
   "metadata": {},
   "source": [
    "## Table Data for printing Error in Expectation Value or AR Gap data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "id": "indian-marking",
   "metadata": {},
   "outputs": [],
   "source": [
    "'''\n",
    "Wrapper script to obtain all the required data for EEV\n",
    "'''\n",
    "def error_in_expectation_values_wrapper(machine):\n",
    "    ## compare the results from each machine\n",
    "    ibmq_names = {'ibmq_guadalupe': 'IBMQ-Guadalupe', 'ibmq_manhattan': 'IBMQ-Manhattan',\n",
    "                  'ibmq_rome': 'IBMQ-Rome','ibmq_bogota': 'IBMQ-Bogota','ibmq_belem':'IBMQ-Belem','ibmq_quito':'IBMQ-Quito',\n",
    "                  'ibmq_paris': 'IBMQ-Paris', 'ibmq_toronto': 'IBMQ-Toronto', 'ibmq_casablanca': 'IBMQ-Casablanca'}\n",
    "    #machine = 'ibmq_rome'\n",
    "    \n",
    "    eev_values = [] #order: No DD, All-DD, ADAPT, RTB\n",
    "    programs = []\n",
    "    files = './final_evaluations_logfiles/' + machine+'*QAOA*.log'\n",
    "    filelist =  sorted(glob.glob(files))\n",
    "    #print('Number of programs evaluated for ', machine, ' :', len(filelist))\n",
    "    for logfile_id in range(len(filelist)):\n",
    "        logname = filelist[logfile_id]\n",
    "        read_data = read_data_dictionary_from_logfile(logname)\n",
    "        evaluated_data = extract_final_evaluations_data(read_data)\n",
    "        if evaluated_data['eev'] is not None:\n",
    "            programs.append(evaluated_data['program'])\n",
    "            eev_values.append([truncate(evaluated_data['eev']['no_dd_xyxy'],2),truncate(evaluated_data['eev']['all_dd_xyxy'],2),truncate(evaluated_data['eev']['adapt_xyxy'],2), truncate(evaluated_data['eev']['runtime_best_xyxy'],2)])\n",
    "    \n",
    "    # print table data in Latex format\n",
    "    #print(programs)\n",
    "    #print(eev_values)\n",
    "    print_str = '\\multirow{'+str(len(programs))+'}{*}{'+ibmq_names[machine] + '} & '\n",
    "    for i in range(len(programs)):\n",
    "        if i ==0:\n",
    "            print_str = print_str + programs[i] + ' & ' + str(eev_values[i][0]) + ' & ' + str(eev_values[i][1]) + ' & ' + str(eev_values[i][2]) + ' & ' + str(eev_values[i][3]) + ' \\\\' + '\\\\' '\\n'\n",
    "        else: # start with & because machine spans several rows\n",
    "            ## add a cline\n",
    "            print_str = print_str + '\\cline{2-6} \\n'\n",
    "            print_str = print_str + ' & '+ programs[i] + ' & ' + str(eev_values[i][0]) + ' & ' + str(eev_values[i][1]) + ' & ' + str(eev_values[i][2]) + ' & ' + str(eev_values[i][3]) + ' \\\\' + '\\\\' '\\n'\n",
    "       \n",
    "    # finally add the Hline\n",
    "    print_str = print_str + '\\hline \\n'\n",
    "    print(print_str) \n",
    "        \n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 272,
   "id": "parliamentary-attitude",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\\multirow{4}{*}{IBMQ-Guadalupe} & QAOA-10 & 17.41 & 19.47 & 13.36 & 13.36 \\\\\n",
      "\\cline{2-6} \n",
      " & QAOA-8-B & 14.88 & 19.97 & 19.32 & 12.64 \\\\\n",
      "\\cline{2-6} \n",
      " & QAOA-8 & 14.62 & 19.86 & 18.2 & 13.53 \\\\\n",
      "\\cline{2-6} \n",
      " & QAOA-9-B & 13.85 & 23.53 & 19.16 & 12.65 \\\\\n",
      "\\hline \n",
      "\n"
     ]
    }
   ],
   "source": [
    "error_in_expectation_values_wrapper('ibmq_guadalupe')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dangerous-hunger",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
